Я играю с консолью Rails, и мне было интересно, почему следующий код не работает:
Question.create(body: "Why this does not work?", answer_attributes: {body: "Some Answer"})
Это странная причина, когда я делаю это:
question = Question.new(body: "Why this does not work?", answer_attributes: {body: "Some Answer"})
question.answer
Я получаю что-то похожее на это:
=> #<Answer id: nil, body: "Some Answer", question_id: nil, created_at: nil, updated_at: nil>
Кажется, что объект ответа связан с объектом вопроса ...
Теперь, если я попытаюсь сохранить объект, он не будет работать:
question.save
Я понял:
=> false
Когда я вызываю .errors на нем, я получаю это:
question.errors
@messages={:"answer.question_id"=>["can't be blank"]}>
Оба объекта являются новыми, поэтому нормально, что у объекта вопроса нет идентификатора.
Я знаю, что мог бы создать объект ответа, сначала создав вопрос, а затем вызвав для него update_attributes ... Или просто создав вопрос, а затем вызвав answer.build на нем ...
У меня вопрос ... Есть ли способ для дочерней модели получить идентификатор своего родителя при создании?
Да, и если вам интересно, у меня действительно есть проверка, для которой требуется, чтобы ответ имел значение question_id.
ТНХ!