CanCan комплексное определение способностей - PullRequest
1 голос
/ 24 марта 2011

У меня есть объект Задача.

Задачи принадлежат пользователю ИЛИ компании.

Пользователь может принадлежать многим компаниям по найму (например, региональный менеджер).

Есть ли способ, которым я могу проверить с помощью cancan, чтобы определить, принадлежит ли задача пользователю или одной из компаний, к которой он принадлежит?

т.е.

can :manage, Task, do |task|
   task.user_id == user.id || user.companies.each do |company|
     task.company_id == company.id
   end
end

1 Ответ

4 голосов
/ 24 марта 2011

Да, можете, если я хорошо это понял, что-то вроде этого должно работать:

can :manage, Task, do |task|
   task.user_id == user.id || user.company_ids.include?(task.company_id)
end

Лучше всего!

...