2

我在我的应用程序中使用 cancancan 和 activeadmin gem,在 cancan gem 中,自定义操作不起作用。

能力.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.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

两个角色都显示拒绝的范围和链接到“批准”。如何解决这个问题。

4

1 回答 1

2

can :manage, User已经包含所有自定义操作。因此,您的两个角色都可以执行这两个自定义操作。

您可以使用 crud 操作列表:can %i(create read update delete), User而不是can :manage, User两个角色。

于 2014-12-04T09:04:46.693 回答