我在ActiveAdmin中爲我的一個模型/資源定義了一個自定義member_action。主模型控制器調用load_and_authorize_resource,ActiveAdmin正確執行我在我的能力文件中爲該自定義member_action定義的權限。CanCan load_resource設置@model在ActiveAdmin中爲零
但是,它不會使@my_model資源在member_action定義中可用,正如我期望的那樣,每個https://github.com/ryanb/cancan/wiki/authorizing-controller-actions#choosing-actions ......它必須已被加載以檢查能力。那麼爲什麼我的行爲中資源不可用?
我正在運行Rails 3.2,CanCan 1.6.10和ActiveAdmin 0.6.0。下面是我定義的代碼:
/app/controllers/my_models_controller.rb
class MyModelsController < ApplicationController
load_and_authorize_resource
...
end
/app/admin/my_models.rb
ActiveAdmin.register MyModel do
member_action :dance do
@my_model.is_dancing = true
@my_model.save!
redirect_to admin_my_models_path
end
/應用/型號/功能.rb
class Ability
include CanCan::Ability
def initialize(user)
if user and user.is_admin?
can :dance, MyModel
end
end
end
我可以通過顯式加載實例來解決此問題,但我想了解如果我錯過了mething或者它是否實際上是CanCan + ActiveAdmin中的一個錯誤。
雖然我使用了明確的setter和save!而不是update_attributes! – neill