【问题标题】:Rails : Adding an admin role using devise who can see all the usersRails:使用可以查看所有用户的设计添加管理员角色
【发布时间】:2012-04-30 15:10:48
【问题描述】:

我需要使用 devise 为我的应用程序创建一个管理员角色。我已经使用 devise 创建了基本身份验证。我的应用程序中有一个设计用户模型,但现在我需要一个可以显示编辑和销毁所有用户的管理员。我尝试按照教程进行操作,但没有一个有帮助。 我正在使用 rails 3.0.10 和 ruby​​ 1.9.2-p290。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise


    【解决方案1】:

    你只需通过创建 migratioin 先定义 role.rb

          rails g model role  name:string
    

    然后在role.rb中

          class Role
             has_one:user
          end
    

    在用户模型中

          class user
             belongs_to :role
          end
    

    在数据库中插入两个角色

       1.admin
       2.user
    

    然后通过这个检查

        if user.role.name == "admin"  
            # can do all your logic
        else
             your logic
        end
    

    确保将 role_id:integer 插入到用户模型中

    试试看……

    【讨论】:

    • 优秀的解决方案。哈哈,刚注意到这是一个榜样:P
    • 根据您的需要。
    【解决方案2】:

    我有和你类似的要求,也不希望任何用户能够注册。所有这些都将由管理员负责。我做了什么。

    我添加了另一个名为 Admin 的设计模型

    rails generate devise MODEL
    

    为用户模型禁用“可注册”,这样用户就不能自己注册了

    用户.rb

    class User < ActiveRecord::Base
      # Include default devise modules. Others available are:
      # :token_authenticatable, :encryptable, :confirmable, :lockable, :registerable,    :timeoutable and :omniauthable
      devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
    
      # Setup accessible (or protected) attributes for your model
      attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name,  :last_name, :role, :admin
      # attr_accessible :title, :body
    end
    

    使用此处的示例为用户启用 CRUD:https://gist.github.com/1056194

    最后像这样保护保护用户控制器

    users_controller.rb

    # Add this
    before_filter :authenticate_admin!
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-22
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      相关资源
      最近更新 更多