在Rails 2和Rails 3中,如果:autosave => true --一个has_many关联,集合会被循环起来,并在每个子关联上调用保存(:验证=> false)。为什么会这样呢?我们需要一个before_validation回调来运行该子对象,但是它不会运行,因为它是一个跳过验证的保存。
有什么好办法可以绕过这件事?跳过验证的目的是什么?
任何帮助都将不胜感激!谢谢!
发布于 2012-07-13 08:07:22
验证do得到运行。有一个验证阶段和一个保存阶段。AutoSave试图同时为这两个模型完成这两个阶段。因此,在保存父模型时,验证父模型,然后验证父模型的自动保存子模型。验证通过后,将发生保存阶段,该阶段保存父模型并保存子模型(但跳过验证)。原因是验证已经运行。
当我试图在before_save回调过程中在父级内部构建子模型时,我遇到了一个问题。因此,在验证阶段不需要验证关联的对象。
https://stackoverflow.com/questions/11320723
复制