用户has_many会员资格和has_many组织通过会员资格。如何指定默认会员资格?

时间:2015-01-15 18:24:53

标签: 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 :users, through: :memberships, source: :user
end

Class Membership
  belongs_to :user
  belongs_to :organization
end

指定组织和/或成员资格是用户默认值的最合适方法是什么?这样,我可以在登录应用程序时显示默认的组织Feed。

我已经尝试为成员资格添加一个默认的布尔属性,这似乎有效,但感觉不对。我考虑过将一个default_organization属性添加到User模型中,该模型只保存组织的ID,但这看起来似乎并不正确。

是否有Rails批准的处理方式?

1 个答案:

答案 0 :(得分:0)

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

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

另一种方法是将字段设置为您所描述的用户模型,它有点笨重,但它可以工作。

我能思考的最后一种方式,我认为最好的方法是在用户和组织之间建立一个has_one关系。像这样的东西:

has_one :organization, as: :default_organization

希望有所帮助