在我的应用程序中使用cancancan和activeadmin gems,在cancan gem中自定义操作无法正常工作。
ability.rb
if ((user.has_role? :HRMS_Supervisor) && (user.has_application? :HRMS))
can :manage, User
can :approve, User // custom action
end
if ((user.has_role? :HRMS_Employee) && (user.has_application? :HRMS))
can :read, Employee
can :manage, User
can :employee_access, User // custom action
end
我的activeadmin文件
ActiveAdmin.register Teleworker do
scope :pending, default: true
scope :approved
scope :rejected, if: proc{ can? :employee_access, current_user }
scope :all
index do
selectable_column
column "Action" do |resource|
links = ''.html_safe
if can? :approve, current_user
links += link_to "approve", resource_path(resource), class: "member_link view_link"
end
end
end
被拒绝的范围和link_to"批准"正在显示两个角色。如何解决这个问题。
答案 0 :(得分:1)
can :manage, User
已包含所有自定义操作。因此,您的两个角色都可以执行自定义操作。
您可以对两个角色使用crud操作列表:can %i(create read update delete), User
而不是can :manage, User
。