2017-10-29 89 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,您将获得该组的用户数量 –