Rails协会HABTM

时间:2018-01-30 07:52:39

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

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

我有两个模型combined_df = combined_df[~combined_df['Title'].isin(['Mr', 'Mrs', 'Miss', 'Master'])] User。用户可能拥有许多职业和职业可能属于许多用户。

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

用户HABTM

专业has_and_belongs_to_many :professions

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

has_and_belongs_to_many :users

专业" Dev"将被保存在职业表中。

如何在专业模型中保存唯一专业名称并将其分配给许多用户?

2 个答案:

答案 0 :(得分:2)

我建议将其分为两步。

首先找到或创造职业:

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

然后将专业分配给用户:

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

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

答案 1 :(得分:1)

尝试创建关联,如下所示:

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

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