我使用cancancan来定义我的演示餐厅应用程序的功能。每个餐厅都有很多员工,每个员工都有 user_id 和角色属性。我想允许用户编辑餐厅仅当此餐厅的员工使用user_id作为current_user.id并且他的角色是“经理”时。我的问题是,当我通过
找到它们时,可以给很多员工这个角色can :edit, Restaurant do |restaurant|
restaurant.employees.where(role: 'Manager').id=user.id
end
我会得到一个所有管理器的数组,这段代码不会返回true。有关如何实现这一点的任何想法:谢谢!
答案 0 :(得分:2)
你可能正在寻找更像这样的东西:
can :edit, Restaurant do |restaurant|
restaurant.employees.where(role: 'Manager', user_id: user.id).exists?
end