2014-01-23 33 views
0

我在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中的一個錯誤。

回答

0

您是否嘗試過使用由inherited_resources提供的resource方法?

+0

雖然我使用了明確的setter和save!而不是update_attributes! – neill