现在我尝试查找用户是否有权以管理员身份执行某些操作。
这是用户模型代码:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
# attr_accessible :title, :body
has_many :user_roles
has_many :roles, :through => :user_roles
def has_role?(role)
case role
when :admin then admin?
when :member then true
else false
end
end
def admin?
roles.each do |role|
return true if role.name == 'admin'
end
return false
end
end
现在有一个角色名称 = admin 的用户,测试代码在这里:
命令:rails c
user = User.find(1)
user.has_role?('admin')
结果是:
=> 假的
为什么不是真的?
还有什么我认为管理员?方法需要一些重构。现在它很漂亮,但我不知道如何重构):