У меня есть эти модели, и я использую кокон с nested_attributes:Откат при создании объекта с вложенными атрибутами
моделей/report.rb:
class Report < ApplicationRecord
has_many :option_students
accepts_nested_attributes_for :option_students, allow_destroy: true
end
модели/option_students.rb:
class OptionStudent < ApplicationRecord
belongs_to :student
belongs_to :option
belongs_to :report
end
Я пытаюсь создать отчет с помощью консоли rails. У меня уже есть ученик и опция, сохраненная в БД.
Если я пишу:
Report.create(option_students_attributes: [{student_id: 1, option_id: 1}])
консоль выводит Откат:
(0.2ms) BEGIN
Student Load (0.2ms) SELECT "students".* FROM "students" WHERE "students"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Option Load (0.1ms) SELECT "options".* FROM "options" WHERE "options"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
(0.2ms) ROLLBACK
Он не создает отчет, ни объект option_student.
Но если я типа Report.create
, а затем я пишу
Report.update(1, option_students_attributes: [{student_id: 1, option_id: 1}])
Он успешно создает студента вариант при обновлении отчета. Что я делаю с этим неправильно? Я просто использовал вложенные атрибуты с другими моделями, и это сработало.
Спасибо! Просто добавив опцию: true, решила проблему! –