0

我的关联如下:

User has_many :employees

Employee belongs_to :user

Ticket has_many :employees

我的路线是正常的,没有为那些模型嵌套,我该如何为分配的员工编写能力?

注意用户ID与员工ID不同

能力.rb

if user.has_role? :ticket_manager
      can :manage, Ticket, :employee_id => #how to match the employee.id
    end
4

1 回答 1

1

我想你可以做类似的事情:

if user.has_role? :ticket_manager
  can :manage, Ticket do |ticket|
    ticket.employees.map(&:user_id).include?(user.id)
  end
end

但是,如文档https://github.com/ryanb/cancan/wiki/Defining-Abilities-with-Blocks中所述,请注意,这仅在存在实例对象时才有效。例如,在检查索引权限时不会评估该块。

于 2013-09-17T02:41:29.457 回答