我在rails中有多对多关系,用户拥有并属于许多user_types,反之亦然。然后user_type有很多角色。
roles_fruits表的示例表:
role_id:1,fruit_id:6
角色表示例:
id:1,姓名:Bannana Worker
用户示例表:
id:1,user_name:employee143
水果表示例:
id:6,姓名:bananna
在模型中
has_and_belongs_to_many :roles
has_and_belongs_to_many :users
现在,我想要实现的是允许具有“Bannana Worker”(id 1)角色的用户能够访问它以及没有它的用户,而不是能够进入它。
如果user.roles包含水果ID,则可以:manage,fruit
如何用cancan实现这一目标,如果不可能,那么什么是一个好的替代宝石?
答案 0 :(得分:1)
在ability.rb
can :manage Fruit do |fruit|
user.roles.exists?(fruit.id)
end
在控制器中你可以做到
def your_action
@fruit = ...
authorize! :manage, @fruit
# ...
end