Ruby on rails RubyonRails-用户分组

Ruby on rails RubyonRails-用户分组,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试实现一个组系统,其中一个用户可以创建一个组,其他用户可以加入该组 class User < ApplicationRecord has_many :groups end class Group < ApplicationRecord belongs_to :owner, :class_name => "User" has_many :members, :class_name => "User" end 我认为这与我的用户是如何设置的有

我正在尝试实现一个组系统,其中一个用户可以创建一个组,其他用户可以加入该组

class User < ApplicationRecord
    has_many :groups
end

class Group < ApplicationRecord
    belongs_to :owner, :class_name => "User"
    has_many :members, :class_name => "User"
end
我认为这与我的用户是如何设置的有关,但我无法理解

此外,一旦我能够拥有一个包含“加入”该组的所有用户的列表,我如何从中添加/删除用户


谢谢。

这里有两种可能性:

一个用户可以属于多个组

如果一个用户只属于您的协会所说的一个组,那么您需要将
group\u id
属性添加到
user
模型或
users
表中,该表将标识该用户所属的组。当前您没有该列,这就是它抛出异常的原因。关于
所有者
您在
表中有一个
所有者id
,该表提供了
所有者
,该所有者是
用户
对象

User - group_id
Group - owner_id
但这样,您将只有一个与
用户关联的
,因此您的
有许多:组
用户
模型中没有用处。要有多个表,您需要在两个表之间添加另一个表:

一个用户将只属于一个组

如果一个用户可以属于多个组,那么您需要再创建一个模型,如
UserGroups
,该模型将具有
user\u id
group\u id
,关联如下:

class User < ActiveRecord::Base
  has_many :user_groups
  has_many :groups, through: :user_groups
end

class Group < ActiveRecord::Base
  has_many :user_groups
  has_many :users, through: :user_groups #This can be members also using `class_name`
end

class UserGroup < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end
class用户
这里有两种可能性:

一个用户可以属于多个组

如果一个用户只属于您的协会所说的一个组,那么您需要将
group\u id
属性添加到
user
模型或
users
表中,该表将标识该用户所属的组。当前您没有该列,这就是它抛出异常的原因。关于
所有者
您在
表中有一个
所有者id
,该表提供了
所有者
,该所有者是
用户
对象

User - group_id
Group - owner_id
但这样,您将只有一个与
用户关联的
,因此您的
有许多:组
用户
模型中没有用处。要有多个表,您需要在两个表之间添加另一个表:

一个用户将只属于一个组

如果一个用户可以属于多个组,那么您需要再创建一个模型,如
UserGroups
,该模型将具有
user\u id
group\u id
,关联如下:

class User < ActiveRecord::Base
  has_many :user_groups
  has_many :groups, through: :user_groups
end

class Group < ActiveRecord::Base
  has_many :user_groups
  has_many :users, through: :user_groups #This can be members also using `class_name`
end

class UserGroup < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end
class用户
用户也属于某个组(您忘记了这一点)。
在组架构中,您需要一个组id,以便在创建组后,其他用户可以加入该特定组。在模式中,所有者和成员都应该是“references”类型。这样你就可以了。

用户也属于某个组(你忘了这一点)。
在组架构中,您需要一个组id,以便在创建组后,其他用户可以加入该特定组。在模式中,所有者和成员都应该是“references”类型。有了这一点,你应该没问题。

有很多:成员,:class\u name=>“User”
将在users表中期望有一个
组id
,这正是错误所说的。你需要在
users
表中添加一个外键(
组id
)以被关联的模型
有很多:成员引用,:class_name=>“User”
将在users表中预期一个
组id
,这正是错误所说的。您需要在
用户
表中添加一个外键(
组id
),以被关联的模型
引用。是否可以添加代码以显示示例?我对Rails非常陌生,我很难跟上。你能添加代码来展示一个例子吗?我对Rails非常陌生,我很难跟上。我能够通过引用这个问题/答案来完成这项工作,我能够通过引用这个问题/答案来完成这项工作,
class User < ActiveRecord::Base
  has_many :user_groups
  has_many :groups, through: :user_groups
end

class Group < ActiveRecord::Base
  has_many :user_groups
  has_many :users, through: :user_groups #This can be members also using `class_name`
end

class UserGroup < ActiveRecord::Base
  belongs_to :user
  belongs_to :group
end