我有一个Task对象。
任务属于用户或公司。
用户可以通过雇佣关系(如区域经理)属于许多公司。
有没有办法可以用cancan检查任务是属于用户还是属于他们所属的公司之一?
即
can :manage, Task, do |task|
task.user_id == user.id || user.companies.each do |company|
task.company_id == company.id
end
end
答案 0 :(得分:4)
是的,你可以,如果我理解这一点,这样的事情应该有效:
can :manage, Task, do |task|
task.user_id == user.id || user.company_ids.include?(task.company_id)
end
最佳!