【发布时间】:2014-07-01 13:19:59
【问题描述】:
我这里有个问题,我不知道如何处理多对多关系中关联 3 个表的关系
我有 3 个模型(组件、组、权限)
多个组件的组授权,组件可能被多个组授权
权限可以分配给很多组,组有很多权限
所以每个(组件,组)和权限之间应该存在一对多的关系 使一个组对一个组件拥有一个权限
所以我构造了一个 components_groups_permissions 表 {component_id,group_id,permission_id}
组件模型
has_many :groups, through: :components_groups_permissions
has_many :permissions, through: :components_groups_permissions
has_many :components_groups_permissions
组模型
has_many :components, through: :components_groups_permissions
has_many :permissions, through: :components_groups_permissions
has_many :components_groups_permissions
权限模型
has_many :components, through: :components_groups_permissions
has_many :groups, through: :components_groups_permissions
has_many :components_groups_permissions
ComponentsGroupsPermission 模型
belongs_to :component
belongs_to :group
belongs_to :permission
如何通过这个关系添加记录或检索记录
编辑: 我的组件如目录 allow_to_rename、allow_to_delete 等权限
【问题讨论】:
-
您要从哪个表中检索项目?
-
我需要从关系中检索项目以回答诸如 groupA 对 componentA 的权限是什么等问题
-
@Mostafa 您的组件没有多大意义您需要提供有关如何使用这些模型的更多信息
-
@Babar 请阅读我的编辑
-
通过控制台最简单的方法是你这样做
entry=ComponentsGroupsPermission,entry.component_id= (id of a component),entry.group_id= (id of a group),entry.permission_id= (id of a permission),entry.save
标签: ruby-on-rails ruby activerecord ruby-on-rails-4 has-many-through