0

我是 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
4

1 回答 1

0

在你的ability.rb档案中,

if @user && @user.role?(:admin)

应该是

if user && user.role?(:admin)
于 2013-03-08T03:29:44.573 回答