【发布时间】: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
我需要使用 devise 为我的应用程序创建一个管理员角色。我已经使用 devise 创建了基本身份验证。我的应用程序中有一个设计用户模型,但现在我需要一个可以显示编辑和销毁所有用户的管理员。我尝试按照教程进行操作,但没有一个有帮助。 我正在使用 rails 3.0.10 和 ruby 1.9.2-p290。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 devise
你只需通过创建 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 插入到用户模型中
试试看……
【讨论】:
我有和你类似的要求,也不希望任何用户能够注册。所有这些都将由管理员负责。我做了什么。
我添加了另一个名为 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!
希望这会有所帮助。
【讨论】: