これは私ability.rbクラスの要部である:アクションがインデックスであっても、ブロックでcancanを有効にするのはなぜですか?
def initialize(user)
can :manage, User do |u|·
user == u·
end
end
cancan documentationによれば:
実際のインスタンスオブジェクトが存在する場合、ブロックのみが評価されます。 クラスのアクセス許可をチェックするときに評価されません( インデックスアクションなど)。
ブロックが実行されない場合でもしかし、UsersController
index
アクションのために、それはまだ、ユーザーをリスト、:manage
権限を付与します。
私は上記のコードをコメントアウトすることでこれを確認した後、ユーザーは承認されていません。
cancanを理解する限り、ブロックは実行されるはずです(実際には実行されません)。ブロックが実行されない場合、ブロックはfalse
を返したと見なされ、許可を与えません。 。
これは間違っているのですか、これはバグですか?
私はcancanバージョン1.67を使用しています。
ブロックが実行されていないのは大丈夫です。しかし、ブロックが実行されていなくても、デフォルトで許可を与えているのは驚きです。 – Ovesh