Ruby on rails 用户拥有多个会员资格,并且通过会员资格拥有多个组织。如何指定默认成员资格?

Ruby on rails 用户拥有多个会员资格,并且通过会员资格拥有多个组织。如何指定默认成员资格?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我想让我的用户能够指定哪个组织是他们的默认组织。每个用户可以属于多个组织,如下所示: Class User has_many :memberships, dependent: :destroy has_many :organizations, through: :memberships, source: :organization end Class Organization has_many :memberships, dependent: :destroy has_many

我想让我的用户能够指定哪个组织是他们的默认组织。每个用户可以属于多个组织,如下所示:

Class User
  has_many :memberships, dependent: :destroy
  has_many :organizations, through: :memberships, source: :organization
end

Class Organization
  has_many :memberships, dependent: :destroy
  has_many :users, through: :memberships, source: :user
end

Class Membership
  belongs_to :user
  belongs_to :organization
end
指定组织和/或成员是用户默认的最合适的方式是什么?这样,我可以在组织登录到应用程序时显示默认的组织提要

我曾尝试向成员身份添加一个默认的布尔属性,这似乎可行,但感觉不太对劲。我考虑过在用户模型中添加一个默认的组织属性,该属性只保存组织的ID,但这似乎不正确


是否有Rails认可的方法来处理此问题?

考虑一下,有几种方法可以解决此问题:

由于这是一个多对多关联,您可以在关联模型上添加一个字段,但这需要一些验证才能正常工作,因为您可能会错误地将其中多个关系设置为true

另一种方法是像您描述的那样为您的用户模型设置一个字段,虽然有点笨重,但它可以工作

我能想到的最后一种方法,也是我认为最好的一种方法是在用户和组织之间建立一种“有一个”的关系。大概是这样的:

has_one :organization, as: :default_organization

希望能有所帮助

您能详细介绍一下吗?我很难弄清楚如何让它工作。我尝试在用户模型上使用has\u one:organization,as::default\u organization,但这会在组织模型中查找默认的\u organization\u id,该id不存在。即使这样做了,这将如何帮助确定每个用户的默认值?