カスタムアクション以外のすべてでcancanが正常に機能しています。正しく保護されていない upload_photos アクションがありました。私は、ability.rb ファイルに次のような非常に基本的なテスト アクションを追加しました。
can :test, User, :id => user.id
しかし、何らかの理由で常にtrueと評価されるため、次のように変更しました
can :test, User, :email => 'a@a.com'
繰り返しますが、常に true と評価されます。
ここでcancanが正しく機能しない理由を知っている人はいますか?
私のユーザーコントローラーには、上部に次のものがあります。
load_and_authorize_resource
前もって感謝します。
解決:
Cancan の load_and_authorize_resource はカスタム アクションに干渉するため、次のようにする必要があります。
load_and_authorize_resource :except => [:test]
そして、テストアクションで:
authorize! :test, @user