例如,一个用户加入了多个组,一个组有多个用户成员。这是一种正常的多对多关系。然而,我想将用户识别为"成员"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