Rails管理员从头开始

时间:2016-12-18 20:11:28

标签: ruby-on-rails admin

我正在尝试创建rails admin而不使用gem。

我有管理员登录名和命名空间。我的问题是如何在管理员和外部管理员中区分用户模型。

想象一下,用户模型有一个控制器,其中包含动作编辑更新新建。我想对管理员使用相同的操作。但我是否必须创建另一个控制器或我应该使用相同的控制器?

1 个答案:

答案 0 :(得分:3)

有很多方法可以做到这一点。这取决于您的项目及其复杂性。最简单的解决方案是在用户模型中添加管理列,例如:

    rails generate migration AddAdminToUsers admin:boolean 
    rails db:migrate

并从您的数据库用户表中为admin用户分配true。例如,您的数据库中的第一个用户。在rails控制台中:

rails c
user = User.first  # The console will load first user
user.admin = 1     # It will return true 
user.save          # It will save and assign true to admin user

然后你只需要在 application_controller.rb 中制作简单的逻辑,然后从你的视图中调用方法is_admin?。 (假设您已经在会话哈希中存储了用户的ID:session[:user_id] = user.id

  helper_method :current_user, :signed_in?, :is_admin?

  def current_user
    @current_user ||= User.find(session[:user_id]) if session[:user_id]
  end

  def signed_in?
    !!current_user
  end

  def is_admin?
    signed_in? ? current_user.admin : false
  end

还有很多其他方法,例如添加角色,将Admin表与Users表区分开来。如果您选择区分admin和users表,则还需要Admin控制器和Admin模型。我希望我能给你开始的想法。