0

私はRailsを初めて使用し、ユーザーロールを作成してCancanで動作させる方法を理解するのに苦労しています。私はこれとcancanwikiにキャストされたrailsをフォローしています。私が理解していないのは、各ユーザーの役割を定義することです。たとえば、管理者、登録メンバー、ゲストがアクセスできるものなどです。自分のコーディングが正しい方向に進んでいるかどうかはわかりません。また、「未定義のローカル変数またはメソッド`roles_mask'」エラーが発生しました。

以下のファイルで役割が適切に設定されているとは思いません。役立つ場合は、ユーザー認証を最初から作成しました。私がこれまでに持っているセクションは、ギャラリーとユーザープロファイルです。新しいアカウントを作成し、ドロップダウンボックスオプション「管理者」を選択した場合、ATMには管理者権限がありません。私はまだページへのアクセスをロックアウトしています。

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
4

1 に答える 1

0

あなたのability.rbファイルでは、

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

おそらく

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