ruby-on-rails-3 - Rails - 为什么 `accepts_nested_attributes_for` 将 `autosave` 设置为 true

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

在 Ruby on Rails 中,如果你声明 accepts_nested_attributes_for 在您的模型中,autosave对于子关联设置为 true。这是必要的吗?

根据我的理解,Rails 已经验证了所有新的和改变的 child ,而无需声明 autosave: true .这似乎涵盖了您接受子关联的嵌套属性的所有情况。但是,与 autosave: true现在每次保存父级时都会验证子级,即使 child 没有改变 .

这可能会产生重大的意外后果,尤其是当您修改子模型时导致大量记录无效。

最佳答案

尝试设置 validate: false在协会上。你可以从http://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.html看到激活 autosave (在我们的例子中通过 accepts_nested_attributes_for)总是验证记录,除非你使用 validate: false

关于ruby-on-rails-3 - Rails - 为什么 `accepts_nested_attributes_for` 将 `autosave` 设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703146/

相关文章:

ruby-on-rails - 是否可以在单个 "include"语句中包含多个模块?

ruby-on-rails - 使用 Rails 3 邮件

ruby-on-rails - Rails 4 关系#全部弃用

ruby-on-rails - rails belongs_to 同一个模型两次

sql - updated_at 和 creatd_at 之间的差异的事件记录子集

ruby-on-rails - 事件管理员 NoMethodError 错误

ruby-on-rails - Rails迁移更改顺序或顺序

ruby-on-rails - rspec & Rails 3 找不到模型对象

mysql - 如何使用 csv 文件更新数据库中的特定行?(rails)

ruby-on-rails - Model.ids 和 Model.select( :id). map(&:id) 之间的区别