2017-10-29 90 views
1

我對Rails有點新,我想在我的應用程序中創建用戶組。用戶可以屬於多個組,並且組中可以有許多用戶。例如,將會有一年級的所有一年級教師,他們也將屬於其他一些小組。Rails創建用戶組

這是我當前的代碼。

class Group < ApplicationRecord 
    has_many :users 
end 

class User < ApplicationRecord 
    belongs_to :group 
end 

此刻,如果我將用戶分配給Ruby控制檯中的組,它只允許一個組標識。我怎樣才能讓一個用戶有多個group_ids?

+1

http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association – AbM

+0

@AbM我確實看到這個,但是我很困惑,因爲我只有兩個模型? –

+0

您需要創建第三個模型,例如具有'user_id'和'group_id'的'Membership'。 – AbM

回答

2

在這種情況下,您應該有NxN(多對多)關係。所以你需要一個額外的模型。您可以生成這樣說:

rails g model UserGroup user:references group:references 

然後,你改變你的模式是這樣的:

class Group < ApplicationRecord 
    has_many :user_groups 
    has_many :users, through: :user_groups 
end 

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

這樣的話,你可以訪問用戶羣體是這樣的:

User.first.groups 

或a羣用戶如下:

Group.first.users 

希望這有助於...祝你好運!

+0

如何獲得組中所有用戶的數組以及組中的用戶數? –

+1

@TrentonTyler是的。如果您訪問組實例(如示例中所示)Group.first.users,您將獲得該組的所有用戶。如果您使用Group.first.users.count,您將獲得該組的用戶數量 –