0

私は、CanCan の威力について自分自身を混乱させてしまったと思います。

私はここでより長い質問をしました - Rails has_many :through、null belongs_to、複数の belongs_to 、および belongs_to の削除? . しかし、メンバーの 1 人の助言により、私は自分の質問を単純化して、私の最終的な質問だと思うものにしました。

つまり、 aUserは aRoleにa を持っていNetworkます。AUserは を作成することもできますEventsが、Events表示/編集できるものはすべてそれに基づいていRoleます。Userが紛失した場合、RoleにアクセスできなくなりますEvent

さらに、を作成したUserおよび/またはが削除された場合、は に引き続き存在し、で十分に高い権限 (管理者、マネージャーなど) を持つすべての人に表示されます。RoleEventEventNetworkUsersRole

CanCan を使用して、Userが にアクセスできるかどうかEventをテストすることで判断できますRole。その部分はうまく機能しています。

しかし、より概念的には、CanCan を使用して、 のコントローラー アクションへのアクセスと、 に基づいてビューに が表示さEventsれるかどうかの両方を制御する場合、との間のレール関連付けが必要ですか? 技術的には は aの aを介してのみ接続されるため、アクセスを制御するために CanCan に任せることができますか、それとも関連付けが必要ですか。次のような方法があるとよいでしょうか。Eventcan :readhas_many :throughUsersEventsUserEventRoleNetwork

def events
  ... # info for grabbing all events user has access to?
end

それともそれも不要ですか?

4

1 に答える 1

1

has_many :through を使用する必要はありません

見てみましょう: https://github.com/ryanb/cancan/wiki/defining-abilities

ユーザーにさまざまな役割を割り当て、投稿したばかりの wiki で彼らが言うことを使用して権限を確認できます

于 2012-12-05T18:51:27.733 に答える