2
私は、次のスキーマがあります。私は、リレーションシップ・レコードを作成したい場合はRails 5 has_and_belongs_to_manyを指定すると、結合レコードを作成する方法は?
class Industry << ApplicationRecord
has_and_belongs_to_many :departments
end
# Relationship table: departments_industries
class Department << ApplicationRecord
has_and_belongs_to_many :industries
has_and_belongs_to_many :job_titles
end
# Relationship table: departments_job_titles
class JobTitle << ApplicationRecord
has_and_belongs_to_many :departments
end
を:
department.job_titles.find_or_create_by(title: title)
上記は、上記のクエリは、レコードの作成した場合のみdepartments_job_titles
でレコードを作成するに終わるん。 JobTitleがすでに存在する場合、Railsはdepartments_job_titles
に関係レコードを作成していません。
にはどうすれば更新できます
department.job_titles.find_or_create_by(title: title)
をJobTitleレコードが見つからないか作成されたいずれかのとき、常にdepartments_job_titles
で関係レコードを作成するには?
おかげで
(https://github.com/bbatsov/rails-style-guide#activerecord CTRL + F "has_and_belongs_to_manyアソシエーション")、それが推奨されますHABTMの代わりに:has_many:things、::join_records'を使用する(引用符)* "結合モデルの追加属性と検証を許可する" *( 'favorite'、' position'属性など) – MrYoshiji