CanCan复杂的能力定义

时间:2011-03-23 22:35:22

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

我有一个Task对象。

任务属于用户或公司。

用户可以通过雇佣关系(如区域经理)属于许多公司。

有没有办法可以用cancan检查任务是属于用户还是属于他们所属的公司之一?

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

1 个答案:

答案 0 :(得分:4)

是的,你可以,如果我理解这一点,这样的事情应该有效:

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

最佳!