私は、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
および/またはが削除された場合、は に引き続き存在し、で十分に高い権限 (管理者、マネージャーなど) を持つすべての人に表示されます。Role
Event
Event
Network
Users
Role
CanCan を使用して、User
が にアクセスできるかどうかEvent
をテストすることで判断できますRole
。その部分はうまく機能しています。
しかし、より概念的には、CanCan を使用して、 のコントローラー アクションへのアクセスと、 に基づいてビューに が表示さEvents
れるかどうかの両方を制御する場合、との間のレール関連付けが必要ですか? 技術的には は aの aを介してのみ接続されるため、アクセスを制御するために CanCan に任せることができますか、それとも関連付けが必要ですか。次のような方法があるとよいでしょうか。Event
can :read
has_many :through
Users
Events
User
Event
Role
Network
def events
... # info for grabbing all events user has access to?
end
それともそれも不要ですか?