2017-05-30 11 views
0

私はこれに近づく方法について混乱しています。私はメンバーシップモデルを使ってユーザーとグループを接続していますが、ユーザーが新しいグループを作成できるようにしたいと考えています。明らかに、グループはユーザーに属する必要がありますが、グループはメンバーシップ・テーブルを介してユーザーにも属します。レールhas_manyとhas_manyから

これは私のuser.rbファイルにありますが、間違っていると感じています。私は最初のものを削除して、スルーワンを持っていますか?その場合、グループの作成者はどのようにして作業しますか?

class User < ApplicationRecord 
    has_many :groups 
    has_many :groups, through: :memberships 
end 

つまり、ユーザーは多くのグループのメンバーですが、多くのグループの作成者です。メンバーシップテーブルには2つの列(グループIDとユーザーID)しかありません。この列のユーザーIDは、そのグループのメンバーであるユーザーを格納するために使用されます。私はグループを作ったユーザーについて何をすべきかについて悩んでいます。

答えて

1

グループとユーザーの間には2つの関係があります。 1つは、ユーザーがグループを作成したことと、ユーザーがグループに所属しているということです。このアイディアを反映させるには、関係の命名を設定します。グループテーブルにも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 
+0

これは私が探していたものです。ありがとうございます。 – ddonche