CanCanCan允许我们通过abilities在Rails中快速设置授权。 best practice是使用哈希条件。然而, scopes/blocks允许更复杂的能力创造。
我想知道是否有一种方法可以将哈希技能用于has_many关系。例如,给定一个has_one creator和has_many管理员的事件(并且可以更新事件),我相信这个范围可行。
can [:update], Event do |event|
event.creator.id == user.id or event.admins.where(user_id: user.id).first.id == user.id
end
我们可以转换为使用哈希吗?
can [:update], Event, creator: { user_id: user.id }
can [:update], Event, admins: { user_id: user.id } #<<< Will this work? Any gotchas?
另外,在一行代码中使用哈希值会很好,但是我找不到一种方法来使语法在语法上有效。谢谢!
答案 0 :(得分:0)
使用哈希工作得很好,虽然看起来你不能在设计的一行上做到 - https://github.com/CanCanCommunity/cancancan/wiki/defining-abilities#combining-abilities