【发布时间】:2014-08-31 15:23:24
【问题描述】:
我正在使用 ActiveAdmin、Devise 和 CanCan 开展 Rails 项目。
我想要做的是用 cancan 检查自定义 member_action 的能力。像这样
def initialize(admin_user)
can :read, ModelA
can [:disable,:reset], ModelA if admin_user.has_edit_ability?
end
第二个“can”行不起作用。
以下是我项目中的相关代码。我在 ActiveAdmin 中添加了两个成员操作。
ActiveAdmin.register ModelA do
def member_action :disable, :method => :post do
...
end
def member_action :reset, :method => :post do
...
end
...
index do
...
actions do |m|
link_to 'disable', disable_admin_model_a_path(m.id)
link_to 'reset', reset_admin_model_a_path(m.id)
end
end
end
管理员用户的类别是 AdminUser。 AdminAbility 在 admin_user.rb 中定义
class AdminAbility
include CanCan::Ability
def initialize(admin_user)
can :read, ModelA
can [:disable,:reset], ModelA if admin_user.has_edit_ability?
end
end
我意识到 ActiveAdmin 可能不支持它。我想知道我是否可以通过添加其他代码使其工作,或者我应该以其他方式检查自定义 member_action 的能力。
【问题讨论】:
标签: ruby-on-rails activeadmin cancan