[英]ActiveAdmin manage abilities of custom member_action with cancan
我正在使用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
第二條“可以”行不起作用。
以下是我項目中的相關代碼。 我在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
admin用戶的類別為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的功能。
看來您應該手動進行操作,例如:
ActiveAdmin.register ModelA do
def member_action :disable, :method => :post do
authorize! :disable, @instance_for_modela
...
end
def member_action :reset, :method => :post do
authorize! :reset, @instance_for_modela
...
end
...
index do
...
actions do |m|
link_to 'disable', disable_admin_model_a_path(m.id) if authorized?(:disable, m)
link_to 'reset', reset_admin_model_a_path(m.id) if authorized?(:reset, m)
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.