私のプロジェクトでは、Devise認証を扱うユーザークラスがあります。各ユーザーには1つの役割が関連付けられています。例として、マネージャーは役割#1です。Rails:cancancan gem conditionが動作しない
ロールはクラスであり、role_idに基づいてロールとユーザーの間に関連があります。したがって、マネージャーは1のrole_idを持ちます。
各ユーザーの権限を管理するためのcancancan gemがインストールされています。マネージャーのみがユーザーアカウントを作成できます。だから、私は能力クラスでこれを書いた:私は私のマネージャーでログインして、新しいユーザーのページにアクセスしようとすると、
def new
@user = User.new
authorize! :manage, @user
end
問題がある:私のユーザーのコントローラで
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role_id == 1
can :manage, :user
else
cannot :manage, :user
end
end
、私はこれを持っています私はcancancanから、私がページにアクセスする許可を持っていないというメッセージを受け取ります。
私はそれが私の状態かどうかわからないか、私がアクセスしようとしているとき、あなたの助けのために...
感謝をuser.role_idたりします。
がcancancan宝石を参照してください:https://github.com/CanCanCommunity/cancancan
編集:私のIDEはそれがCURRENT_USERを見つけることができないと言われた場合
それは普通のことですか?ご覧のとおり
は、読み取り許可後@articleがあります:あなたはgithubの上でチェックすると
はまた、cancancan使用する方法の例があります。だから私は、私はCURRENT_USERを置く必要があると思いません代わりに@user
最後に:
問題は正しくありませんでした:user
ました。それがモデルの場合は、 ":"を付けずにモデルの名前に最初に大文字を書く必要があります。したがって、:user
の代わりに、それはUser
問題は:ユーザーが正しくありませんでした。それがモデルの場合は、 ":"を付けずにモデルの名前に最初に大文字を書く必要があります。代わりに:user、それはUserでなければなりません –