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 に答える