我是Rails的新手,我很难找到如何创建用户角色,然后让它与Cancan一起工作。我正在关注这个和cancan wiki上的rails。我不明白要做的是定义每个用户角色,例如管理员,注册会员和访客可以访问的角色。我不确定我的编码方式是否正确。我还遇到了“未定义的局部变量或方法`roles_mask'”错误。
我不相信我在下面的文件中设置了正确的角色。我从头开始创建用户身份验证,如果有帮助的话。到目前为止我的部分是画廊和用户档案。 ATM如果我创建一个新帐户并选择下拉框选项“admin”,我没有任何管理员权限。我仍然无法访问页面。
ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if @user && @user.role?(:admin)
can :manage, :all
else
can :read, :all
end
if user.role? :user
can :manage, Profile
end
if user.role? :admin
can :manage, Profile
end
end
end
user.rb
ROLES = %w[admin user guest banned]
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def roles
ROLES.reject { |r| ((roles_mask || 0) & 2**ROLES.index(r)).zero? }
end
def role?(role)
roles.include? role.to_s
end
答案 0 :(得分:0)
在ability.rb
文件中,
if @user && @user.role?(:admin)
应该是
if user && user.role?(:admin)