has_many:autosave =>保存孩子时,true跳过验证

时间:2012-07-03 23:51:48

标签: ruby-on-rails ruby-on-rails-3

在Rails 2和Rails 3中,if:autosave =>如果是has_many关联,则会循环收集并在每个子关联上调用save(:validate => false)。这是为什么?我们需要一个before_validation回调来为该子对象运行,但它不会,因为它是一个跳过验证的保存。

这有什么好办法?跳过验证的目的是什么?

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:6)

验证执行运行。有一个验证阶段和一个保存阶段。 AutoSave尝试同时为这两个模型执行这两个阶段。因此,在保存父模型后,将验证父模型,然后验证其自动保存子项。验证通过后,将发生保存阶段,保存父模型并保存子模型(但跳过验证)。原因是验证已经运行。

当我在before_save回调期间尝试在父级内部构建子模型时遇到了问题。因此,在验证阶段,相关对象无法验证。