Rails 协会 HABTM

Rails association HABTM

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

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

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

用户has_and_belongs_to_many :professions

职业has_and_belongs_to_many :users

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

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

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

两个职业"Dev"都会在职业table中得到拯救。

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

我建议将其分成两步。

首先找到或创建职业:

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

然后将职业分配给用户:

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

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

尝试创建如下关联:

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

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