我是 Rails 的新手,在弄清楚如何创建用户角色然后让它与 Cancan 一起工作时遇到了麻烦。我正在关注这个和 cancan wiki 上的轨道。我不明白要做的是定义每个用户角色,例如管理员、注册成员和访客可以访问的内容。我不确定我的编码是否正确。我还遇到了“未定义的局部变量或方法‘roles_mask’”错误。
我不相信我在以下文件中正确设置了角色。如果有帮助的话,我已经从头开始创建用户身份验证。到目前为止,我拥有的部分是画廊和用户资料。ATM 如果我创建一个新帐户并选择下拉框选项“管理员”,我没有任何管理员权限。我仍然无法访问页面。
能力.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
用户.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