Rails 创建用户组

Tre*_*ler 4 ruby-on-rails

我对 rails 有点陌生,我想在我的应用程序中创建用户组。一个用户可以属于多个组,一个组中可以有多个用户。例如,将有一个一年级组,其中包含所有一年级教师,他们也将属于许多其他组。

这是我目前的代码。

class Group < ApplicationRecord
  has_many :users
end

class User < ApplicationRecord
  belongs_to :group
end
Run Code Online (Sandbox Code Playgroud)

目前,如果我在 Ruby 控制台中将用户分配给一个组,它只允许一个组 ID。如何让用户拥有多个 group_id?

Ron*_*pes 6

在这种情况下,您应该有 NxN(多对多)关系。所以你需要一个额外的模型。您可以像这样生成它:

rails g model UserGroup user:references group:references
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样更改模型:

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
Run Code Online (Sandbox Code Playgroud)

这样,您可以像这样访问用户组:

User.first.groups
Run Code Online (Sandbox Code Playgroud)

或像这样的组用户:

Group.first.users
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,祝你好运!

  • @TrentonTyler 是的。如果您访问组实例(如示例中所示)Group.first.users,您将获得该组的所有用户。如果您执行 Group.first.users.count,您将获得该组的用户数 (2认同)