【发布时间】:2010-04-08 18:43:18
【问题描述】:
在 Rails 应用程序中创建管理区域的典型格式/结构是什么?
具体来说,我对这些主题感到困惑:
- 如何处理模型资源对公众和管理员都可用的情况?即用户模型,任何人都可以创建用户、登录等,但只有管理员可以查看用户、删除/更新用户等。
- 什么是正确的路由约定?
- 如何构建控制器?
- 是否认为重复的控制器正常?即管理员版本和非管理员版本?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby admin
在 Rails 应用程序中创建管理区域的典型格式/结构是什么?
具体来说,我对这些主题感到困惑:
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby admin
您可以有 2 个控制器,一个用于公共部分,另一个用于管理员并使用管理员命名空间:
map.namespace(:admin, :path_prefix => 'settings', :name_prefix => 'admin_') do |admin|
admin.resources :users
end
它将映射到 /settings/users 并且控制器必须以 Admin:: 为前缀
像Admin::UsersController 一样,控制器文件也必须放在 app/controllers 目录下的 admin 文件夹中。
【讨论】:
script/generate controller admin/users.
有一系列 Railscasts 展示了一种通过在视图和控制器中使用条件来避免拥有单独管理区域的方法:Where Administration Goes。
这可能不适合您的用例,但值得一看。
【讨论】:
除了在我的路由中设置管理命名空间外,我还使用 declarative_authorization 插件,它允许您为用户定义角色并定义控制器操作和模型属性的访问控制。如果用户尝试访问没有权限的操作,插件将重定向他们的请求。真正巧妙的处理方式,有助于提供细粒度的安全性。
Rails 生态系统中还有其他几个提供类似功能的插件。
【讨论】: