我有一些麻煩讓ActiveAdmin與CanCanCan一起使用。我在Rails 4應用程序中使用CanCanCan版本1.9.2和ActiveAdmin版本1.0.0.pre。建立自己的能力一流,並通過添加load_and_authorize_resource
和check_authorization
我的ApplicationController使我的應用程序的其餘部分授權檢查後,我得到的錯誤ActiveAdmin + CanCanCan錯誤:protected方法`授權!'呼籲<每個ActiveAdmin控制器>
protected method 'authorize!' called for #<Activeadmin::<SomeControler>> (NoMethodError)
經過一番搜索,我碰到了this這個GitHub的問題是看起來完全像我遇到的問題。但是,該解決方案對我來說完全不起作用。在配置/初始化/ active_admin.rb我有,其中包括: ... config.authorization_adapter = ActiveAdmin::CanCanAdapter ...
我也確保我沒有在任何ActiveAdmin控制器controller.authorize_resource
的引用,但我仍然遇到protected method authorize! ...
錯誤,當我嘗試訪問任何ActiveAdmin資源我的集成測試。
一些更多的試驗和錯誤和更多的搜索後,我發現,從調用的ApplicationController load_and_authorize_resource
不推薦,而且ActiveAdmin的authorization_adapter設置CanCanAdapter像我一樣上面應自動啓用ActiveAdmin CanCanCan的授權檢查,但check_authorization
失敗,因爲當從ApplicationController中刪除load_and_authorize_resource
時,資源未被授權用於每個ActiveAdmin控制器。
那麼,爲我的ActiveAdmin控制器啓用CanCanCan授權檢查的正確方法是什麼?我應該如何整合CanCanCan和ActiveAdmin,以便非管理員用戶無法訪問任何ActiveAdmin資源?
我還將this問題發佈到ActiveAdmin郵件列表,但沒有得到任何迴應。任何幫助將不勝感激。
這是爲我工作很好,並移除ActiveAdmin接口擅自能力。從ApplicationController中刪除load_and_authorize_resource並添加這裏提供的代碼的竅門。 – jamesrward 2015-07-20 19:41:40
謝謝!當我不得不從Rails 3.2(ActiveAdmin 0.5.1)升級到Rails 5.0(ActiveAdmin 1.0.0pre4)時,我遇到了同樣的問題。我在ActiveAdmin的問題跟蹤器中報告了此問題:https://github.com/activeadmin/activeadmin/issues/4599 – 2016-08-25 06:31:10
完美地工作,謝謝! – cpursley 2016-12-14 17:56:51