给出以下模型:
class Question < ActiveRecord::Base
has_many :answers
end
class Answers < ActiveRecord::Base
belongs_to: question
validates :comment, presence: true
end
致电
question = Question.new
question.answers.build
question.valid?
valid?
会返回false
,因为相关答案无效。写作时
has_many :answers, validate: false
Question
valid?
中的会返回true
。
这是一个错误还是在使用has_many
时需要自动验证相关模型? Rails指南明确解释validate_associated
与has_many
关系的使用:http://guides.rubyonrails.org/active_record_validations_callbacks.html#validates_associated
答案 0 :(得分:6)
绝对是不一个错误。
Question
Answer
的新实例并将其与此新Question
Question/Answer
模型和关联是否已准备好保存到数据库中?” 正如您所发现的,Rails会在您的案例中说“No”。
我从未使用过,也不关心validates_associated
。但是,我可以向您指出文档,解释您为什么会看到自己的行为。
虽然上述源文件中的文档值得一读,但我会为你提取这些内容
请注意:autosave =&gt; false与不声明不同:自动保存。 当:自动保存选项不存在时,将保存新的关联。
:autosave => SOMETHING
协会:answers
Answer
Question
Answer
无效答案 1 :(得分:0)
我已在父模型中覆盖valid?
以处理验证,同时注意其嵌套关联的状态:
def valid?(context=nil)
super(context) && self.answers.map(&:valid?).all?
end