CanCan - 用户/门票/员工

时间:2013-09-17 01:08:24

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 cancan

我的协会如下:

User has_many :employees

Employee belongs_to :user

Ticket has_many :employees

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

注意用户ID与员工ID

不同

ability.rb

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

1 个答案:

答案 0 :(得分: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中所述,请注意,这只适用于存在实例对象的情况。例如,在检查索引权限时,不会评估该块。