我想我已经对 CanCan 的力量感到困惑。
我在这里问了一个更长的问题-Rails has_many :through、null belongs_to、多个 belongs_to 和删除 belongs_to?. 但在其中一位成员的建议下,我用我认为最终的问题简化了我的问题。
简而言之, aUser在 aRole中有 a Network。AUser也可以创建Events,但是,Events他们可以看到/编辑的都是基于那个Role。如果 aUser丢失了他们Role,他们将无法再访问Event.
此外,如果创建的User和/或被删除,则遗嘱仍然存在于 中,并且对所有具有足够高权限(管理员、经理等)的.RoleEventEventNetworkUsersRole
我可以使用 CanCanUser通过Event测试他们的Role. 那部分工作正常。
但从概念上讲,如果我使用 CanCan 来控制对控制器操作的访问Events以及是否Event甚至显示在基于 的视图中can :read,是否需要在和has_many :through之间建立 rails 关联?由于技术上仅通过 a连接到a ,我可以将它留给 CanCan 来控制访问,还是我需要一个关联。有这样的方法会很好:UsersEventsUserEventRoleNetwork
def events
... # info for grabbing all events user has access to?
end
或者这也没有必要?