假设我有一个rails应用程序,其内容对公众是只读的,但我想构建工具来编辑该内容(或使用脚手架)。我不想公开公开创建/更新/删除操作(即使受密码保护),但我希望在与生产数据库交互的本地网络中安装具有此功能的服务器。
所以我正在考虑为此编写一个插件,它将添加工具rails环境(如开发,生产和测试)以及将控制器方法配置为“仅工具”的方法。如果不处于工具模式,则对任何仅限工具操作的请求将重定向到标准404页面。
在我开始重新发明轮子之前,这样的事情是否已经存在?是否有更好的方法可以解决这个问题?
答案 0 :(得分:0)
有趣的想法 - 除了创建自定义环境之外,它不仅仅是应用程序控制器中的一个before_filter吗?
before_filter :can_access_tools, :except => [:show, :index]
其他控制器会根据需要跳过它。
答案 1 :(得分:0)
为什么将它作为一个单独的环境?我会做(并且已经完成)将编辑功能放在一个单独的命名空间(我通常称之为admin),然后使用before过滤器只允许具有admin角色的用户访问这些控制器。因此,如果您的应用正在显示小部件,您可以在网址/小部件后面的常规应用中看到它们。要编辑它们,您将转到/ admin / widgets(并且还必须以管理员身份登录)。我还创建了一个AdminController,而不仅仅是通过路由命名空间来实现它,该命名空间中的所有其他控制器都会扩展。然后,您可以在一个位置放置任何需要应用于所有这些过滤器的过滤器。
你可以通过删除Active Scaffold之类的内容来快速获得用户界面的UI,以提供一个非常干净的界面来对其进行CRUD操作。您也可以查看此部分的Streamlined或Hobo。
我经常为测试多个上下文设置额外的环境,但对于这种情况,它似乎有点矫枉过正。如果您通过授权(需要管理员角色)来限制编辑功能而不是通过访问(只有本地服务器可以访问它),它还允许您在路上而不是在办公室时进行更改。
答案 2 :(得分:-1)
这是指向demo
的链接