Rails管理系统设置的最佳实践?

时间:2011-09-16 08:21:40

标签: ruby-on-rails admin

我们有一个网站,我们有一个后端管理界面,以及一个显示我们信息的前端。我们正在使用Devise来保护身份验证。

后端应该允许我们的模型对象进行正常的CRUD类型编辑。视图和布局也与前端完全不同。在Rails 3中实现这个的最佳实践是什么?

我们的两种方法是:

  1. 管理视图文件夹包含所有视图特定代码,以及控制器文件夹中的管理文件夹包含控制管理员特定访问权限的所有控制器。
  2. 具有一组视图和控制器的条件逻辑系统,if语句检查用户是否处于管理模式。
  3. 更推荐哪一种,或者如果我们错过了另一种方法,请告诉我。

1 个答案:

答案 0 :(得分:15)

第一个解决方案更好,但是对于这些情况创建了namespaces,最佳做法是在需要用户站点和管理区域之间的相关区分时使用命名空间。详细了解here

您的目录结构应如下所示:

controllers/
     |--admin/
        |--posts_controller.rb

在您的路线中,您将所需的一切都放入管理员名称空间:

namespace :admin do
  resources :posts, :comments
end

您的控制器应该有一个admin文件夹,管理区域中的控制器将如下所示:

class Admin::PostsController < ApplicationController
end

您的视图中还应该有一个admin文件夹,您可以在其中放置相应的视图:

views/
   |--admin/
        |--posts/
             |--index.html.erb
             |--...

您也可以命名模型,但这取决于您的需求,当您需要具有相同名称的不同模型时,这是很好的。例如,如果管理员用户需要不同的表,普通用户需要不同的表。我个人不会使用模型命名空间,只是在非常合理的情况下。

我认为第二种选择会引起很多麻烦,你会在if语句中丢失,我根本不建议这样做。