実現したいこと
親テーブルのレコードを作成時に、子テーブル、孫テーブルまで作成できるようにしたいです。
親(class)、子(teacher)、孫(students)として親:子:孫が1:1:nの関係で構築します。
発生している問題
親テーブルのレコードを作成する際に以下のエラーメッセージが表示されます。
NoMethodError in ClassController#new
undefined method `build' for nil:NilClass
エラーが発生する場所は以下のソースを参照newメソッドのteacher.students.build
にてbuild
できません。pryで確認するとteacherがnilになっているので、孫テーブルのレコードが作成されません。しかしながら参考リンクと同じ作りにしているのですが、解決できません。db:migrate時のmigrateファイルの構成が正しくないのでしょうか?
実装しているソース
Rails
1## controller 2classes_controller.rb 3 4 def new 5 @class = Class.new 6 teacher = @class.build_teacher 7 teacher.students.build 8 end 9 10## model 11class.rb 12 13 has_one :teacher, inverse_of: :class 14 accepts_nested_attributes_for :teacher 15 16teacher.rb 17 18 belongs_to :class, inverse_of: :teacher 19 20 has_many :students, inverse_of: :teacher 21 accepts_nested_attributes_for :students 22 23student.rb 24 25 belongs_to :teacher, inverse_of: :students
参考にしたリンク
回答1件
あなたの回答
tips
プレビュー