ruby-on-rails - 有_许多 :autosave => true skips validation when saving children

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

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

有什么好的办法可以解决这个问题吗?跳过验证的目的是什么?

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

最佳答案

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

当我尝试在 before_save 回调期间在父模型中构建子模型时,遇到了问题。因此,在验证阶段不会验证关联的对象。

关于ruby-on-rails - 有_许多 :autosave => true skips validation when saving children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11320723/

相关文章:

ruby-on-rails - 如何在 Rails 中编写 channel.html 文件(针对 Facebook)

ruby-on-rails - 设计移动mime类型,401仅显示flash消息

ruby-on-rails - 将 Rails 应用程序更改为生产环境

ruby-on-rails - 为什么 Heroku 拒绝这个 git push?

ruby-on-rails-3 - ruby_threadptr_data_type 错误

ruby-on-rails - 重叠背景错误?

ruby-on-rails - 在 rails/ruby 中创建 pdf 发票

ruby-on-rails-3 - 使用 RubyMine 调试 Rails 3

ruby-on-rails - 获取 will_paginate 在第一页上定义自定义偏移量

ruby-on-rails - Carrierwave PDF to Image 使用 MiniMagick