如何处理3个表之间的多对多关系

时间:2014-05-13 18:05:12

标签: ruby-on-rails ruby activerecord ruby-on-rails-4 has-many-through

我在这里遇到问题,我不知道如何处理在多对多关系中关联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 Model

     belongs_to :component
     belongs_to :group
     belongs_to :permission

如何通过此关系添加记录或检索记录

编辑: 我的组件像目录 权限,如allow_to_rename,allow_to_delete

1 个答案:

答案 0 :(得分:0)

假设您要查找属于特定组件的所有componentsgroupspermissions。以下是您如何查询它:

Component.find(:id).componentsgroupspermissions