Ric*_*nes 5 ruby-on-rails-3 rails-activerecord
在Ruby on Rails中,如果accepts_nested_attributes_for在模型中声明,autosave则为子关联设置为true.这有必要吗?
根据我的理解,Rails将在不声明的情况下验证所有新生儿和变身儿童autosave: true.似乎这将涵盖您接受子关联的嵌套属性的所有情况.但是,autosave: true每次保存父项时,子项现在都会得到验证,即使子项未更改也是如此.
这可能会产生重大意想不到的后果,尤其是在您修改子模型时,大量的记录无效.
好问题!我自己也遇到了这个惊喜。
我认为 Rails 只会在自动保存为零(默认值)时保存/验证新的子记录。
在 中save_belongs_to_association(reflection),看起来它只保存关联记录(如果它是新记录或autosave已启用)。
saved = record.save(:validate => !autosave) if record.new_record? || (autosave && record.changed_for_autosave?)
Run Code Online (Sandbox Code Playgroud)
我一直发现自动保存选项有点令人困惑/不一致......但现在我们可能出于向后兼容性的原因而坚持使用它......