私の新しいプロジェクトでは、他のユーザーが賭けの所有者または彼の友人である場合にのみ読み取ることができるリソース 賭けがあります。主な問題は、インデックス アクションの能力を定義するときに発生します。インデックス アクションでは、ブロックは実行されないので、オプションではないと思います。
それを説明しましょう。所有者だけが賭けをインデックス化できるようにしたい場合は、これで十分です。
can :read, Bet, :user => { :id => user.id }
しかし、許容できる ID は、ユーザーのすべての友人によって定義された範囲である必要があります。何かのようなもの:
if (bet.user == user) || (bet.user.friends.include? user)
can :read, Bet
end
しかし、これは正しい CanCan 構文ではありません。
多くの人が CanCan とネストされたリソースに問題を抱えていると思いますが、これに対する答えはまだ見当たりません。