【问题标题】:Rails association HABTMRails 协会 HABTM
【发布时间】:2018-01-30 07:52:38
【问题描述】:

我需要一些帮助来为我的新 Rails 应用程序创建关联。

我有两个型号UserProfession。一个用户可能有很多职业,职业可能属于很多用户。

我可以在两个模型中进行HABTM 关联。

用户has_and_belongs_to_many :professions

职业has_and_belongs_to_many :users

我希望职业表应该只包含唯一的职业名称并将它们分配给许多用户。但是,如果我尝试为像下面这样的用户创建职业

user1.professions.create(name: "Dev")

user2.professions.create(name: "Dev")

两个职业“开发”都会保存在职业表中。

如何在Profession模型中保存唯一的职业名称并分配给多个用户?

【问题讨论】:

  • user1.professions << Profession.find_or_create_by(name: 'Dev') 之类的怎么样?
  • @MarekLipka 谢谢。这样就行了。

标签: ruby-on-rails ruby associations ruby-on-rails-5 model-associations


【解决方案1】:

我建议把它分成两个步骤。

首先找到或创建职业:

profession = Profession.find_or_create_by(name: "Dev")

然后将职业分配给用户:

user1.professions << profession
user2.professions << profession

我还建议在professions 表的name 列上设置唯一索引。保证唯一性。

【讨论】:

    【解决方案2】:

    尝试如下创建关联:

    profession = Profession.find_or_create_by(name: "Dev")
    user1.professions << profession
    
    profession = Profession.find_or_create_by(name: "Dev")
    user2.professions << profession
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多