2017-07-31 85 views
0

CanCanCan允许我们通过abilities在Rails中快速设置授权。 best practice是使用哈希条件。但是, scopes/blocks允许更复杂的能力创造。可能在CanCanCan has_many关系中使用散列能力?

我想知道是否有一种方法可以将哈希能力用于has_many关系。例如,给定一个has_one创建者和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? 

而且,这将是不错的散列或一行代码,但我不能找到一种方法,使这项工作语法。谢谢!

回答