ruby on rails 3-多对多设计,2种相同对象上的关系



例如,一个用户加入了多个组,一个组有多个用户成员。这是一种正常的多对多关系。然而,我想将用户识别为"成员"one_answers"所有者":一个组将有许多"所有者"和许多"成员";每个用户可以是组的所有者或成员。同时,"所有者"也应该是一种"成员"。我应该如何创建这样的表结构?

我有这样的正常多对多关系,在:group_user_relations表中还有一个字段来标识用户是成员还是所有者。

class User < ActiveRecord::Base
    # many-to-many to groups 
    has_many :group_user_relations
    has_many :groups, :through => :group_user_relations
end

class Group < ActiveRecord::Base
  # many-to-many to users 
  has_many :group_user_relations
  has_many :users, :through => :group_user_relations
  alias_attribute :members, :users
end

您需要以下表格:

           USERS
           GROUPS
           ROLES
           USERGROUPROLE

USERGROUPROLE表如下:

         userid  references USER
         groupid references GROUPS
         roleid  referencees ROLES
         Primary key (userid, groupid, roleid)

这将允许组的所有者也是该组的成员。这将允许该组拥有多个所有者和多个成员。一个组有0个或多个成员;一个组有0个或多个所有者。

您可以有一个PERMISSIONS和一个ROLEPERMISSIONS表来确定特定角色的权力。角色具有0个或多个权限。

          ROLEPERSMISSIONS
          roleid references ROLES
          permissionid references PERMISSIONS

示例权限:

         can delete
         can edit
         can create new topic
         can attach file

相关内容

  • 没有找到相关文章

最新更新