我很担心如何接近这个。我通过成员资格模型连接用户和组,但我也希望用户能够创建新组。显然,组必须属于用户,但组也通过成员资格表属于用户。
我的user.rb文件中有这个,但我觉得它错了。我是否删除了第一个并且只通过了一个?在这种情况下,我如何在小组的创建者中工作?
class User < ApplicationRecord
has_many :groups
has_many :groups, through: :memberships
end
换句话说,用户是许多组的成员,但也是许多组的创建者。成员资格表只有两列(组ID和用户ID)。此列中的用户标识用于存储属于该组成员的用户。我对如何处理创建组的用户感到困惑。
答案 0 :(得分:1)
组和用户之间应该有两种关系。一个反映用户创建组的事实,以及用户属于一个组的事实。您可以通过配置关系的命名来反映这一想法。您还必须在Groups表中添加user_id字段。
class User < ApplicationRecord
has_many :created_groups, class_name: "Group"
has_many :memberships
has_many :groups, through: :memberships
end
class Group < ApplicationRecord
belongs_to :creator, class_name: "User"
has_many :memberships
has_many :subscribers, through: :memberships, source: :user
end
class Membership < ApplicationRecord
belongs_to :user
belongs_to :group
end