2017-05-30 138 views
0

我很困惑如何去解決這個問題。我通過會員模式連接用戶和組,但我也希望用戶能夠創建新組。顯然,一個組必須屬於一個用戶,但這些組也屬於用戶通過成員表。Rails has_many和has_many通過

我在我的user.rb文件中有這個,但我覺得它是錯誤的。我是否刪除第一個,並且只有一個?在這種情況下,我如何在團隊的創建者中工作?

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

換句話說,用戶是許多組的成員,也是許多組的創建者。成員資格表只有兩列(組ID和用戶ID)。此列中的用戶標識用於存儲屬於該組成員的用戶。我被困在創建組的用戶該怎麼做。

回答

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 
+0

這就是我一直在尋找,謝謝。 – ddonche