【发布时间】:2026-02-13 14:05:01
【问题描述】:
我正在使用 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"]}>
两个对象都是新的,所以问题对象没有 id 是很正常的。
我知道我可以通过首先创建一个问题然后调用 update_attributes 来创建答案对象...或者简单地通过创建一个问题然后调用 answers.build 来创建它...
我的问题是...有没有办法让子模型在创建时获取其父 ID?
哦,如果您想知道,我确实有一个验证,需要一个答案才能具有 question_id 值。
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby activerecord ruby-on-rails-3.1 model