今回はモデルの親子関係(ネスト関係)を構築するためのメソッド「accepts_nested_attributes_for」について、出来るだけ簡潔に解説していきます。このメソッドは「fields_for」と併用して用いられることが多いです。
accepts_nested_attributes_forとは
「accepts_nested_attributes_for」は、Railsが標準装備しているActiveRecordのメソッドの1つです。モデルの親子関係(言い換えれば、ネストされている関係)を作り出すことができます。
それにより、1つのformで複数のテーブルのレコードを作成することが可能です。
accepts_nested_attributes_forの書き方
「accepts_nested_attributes_for」は親モデルに記述します。
↓ 親モデル
class Parent < ApplicationRecord
has_many :children
accepts_nested_attributes_for :children
end
↓ 子モデル
class Child < ApplicationRecord
belongs_to :parent
end
まとめ
- 「accepts_nested_attributes_for」を使用すると、1つのformで複数のテーブルのレコードを作成することが可能
- 「accepts_nested_attributes_for」は親モデルに記述
- 「fields_for」と併用することが多い
ちなみに
ちなみに「accepts_nested_attributes_for」はあまり評判が良くありません。Rails生みの親のDHHが「accepts_nested_attributes_for」を消したいと言っている程です。
こんなに便利なメソッドの評判が良くない原因は分かりませんが、代わりとなるメソッドが生み出されて近いうちに「accepts_nested_attributes_for」は使われなくなるのでは?と思っています。。。
今回はモデルの親子関係(ネスト関係)を構築するためのメソッド「accepts_nested_attributes_for」について解説しました。
fields_forの使い方と併せて学習していただければと思います。

【Rails】子モデルを自在に編集できるフォームヘルパー「fields_for」の使い方について簡単に解説!親モデルとそれに紐づく子モデルを同時に編集することができるフォームヘルパー「fields_for」の使い方について簡単に解説しています。モデルの親子関係を構築するには、「accepts_nested_attributes_for」の使い方もマスターする必要があるので、この機会にぜひ覚えておきましょう。...