在我的新项目中,我有一个资源 Bet,其他用户只有当他们是该赌注的所有者或他的朋友时才能阅读该资源。当我想为索引操作定义能力时,主要问题就出现了。在索引操作中,该块不会被执行,所以我想这不是一个选项。
让我们来说明一下。如果我只希望所有者能够为投注编制索引,这就足够了:
can :read, Bet, :user => { :id => user.id }
但我需要可接受的 id 是一个范围,由用户的所有朋友定义。就像是:
if (bet.user == user) || (bet.user.friends.include? user)
can :read, Bet
end
但这不是正确的 CanCan 语法。
我想很多人都遇到过 CanCan 和嵌套资源的问题,但我仍然没有看到任何答案。