【发布时间】:2014-02-13 19:18:02
【问题描述】:
我在 ActiveAdmin 中为我的一个模型/资源定义了一个自定义 member_action。主模型 Controller 调用 load_and_authorize_resource 并且 ActiveAdmin 正确执行我在我的能力文件中为该自定义 member_action 定义的授权。
但是,它不会在 member_action 定义中提供 @my_model 资源,正如我所期望的 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
/app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
if user and user.is_admin?
can :dance, MyModel
end
end
end
我可以通过显式加载实例来解决这个问题,但我想了解我是否遗漏了什么,或者它实际上是否是 CanCan + ActiveAdmin 中的错误。
【问题讨论】:
标签: ruby-on-rails activeadmin cancan