ActiveAdmin を CanCanCan と連携させるのに問題があります。Rails 4 アプリで CanCanCan バージョン 1.9.2 と ActiveAdmin バージョン 1.0.0.pre を使用しています。アビリティ クラスをセットアップし、ApplicationController にload_and_authorize_resource
とを追加してアプリの残りの部分で承認チェックを有効check_authorization
にすると、エラーが発生します。
protected method 'authorize!' called for #<Activeadmin::<SomeControler>> (NoMethodError)
いくつか検索した後、私が抱えている問題とまったく同じように見えるこのGitHubの問題に遭遇しました。ただし、解決策はまったく機能しません。config/initializers/active_admin.rb には、特に次のようなもの
があります。 ActiveAdmin コントローラーに
...
config.authorization_adapter = ActiveAdmin::CanCanAdapter
...
参照がないことも確認しましたが、統合テストから ActiveAdmin リソースにアクセスしようとするとエラーが発生します。controller.authorize_resource
protected method authorize! ...
試行錯誤と検索を重ねた結果load_and_authorize_resource
、ApplicationController からの呼び出しは推奨されないことがわかりました。また、上記のように ActiveAdmin の authorization_adapter を CanCanAdapter に設定すると、ActiveAdmin で CanCanCan の承認チェックが自動的に有効になるはずcheck_authorization
ですが、リソースが毎回承認されていないために失敗することがわかりました。 ApplicationController から削除されたときの ActiveAdmin コントローラーload_and_authorize_resource
。
では、ActiveAdmin コントローラに対して CanCanCan の認証チェックを有効にする正しい方法は何ですか? 管理者以外のユーザーが ActiveAdmin リソースにアクセスできないようにするには、CanCanCan と ActiveAdmin をどのように統合すればよいですか?
この質問も ActiveAdmin メーリング リストに投稿しましたが、回答がありませんでした。どんな助けでも大歓迎です。