autosave: true
时保存关联根据 https://api.rubyonrails.org/classes/ActiveRecord/AutosaveAssociation.htmlbook = Book.new(name: 'foo')
book.authors.build(name: 'bar') #has_many
保存
或喜欢
book = Book.new(name: 'foo')
book.build_author(name: 'bar') #has_one
book.save
book = Book.new(name: 'foo')
book.author = Author.new(name: 'bar')
保存
或者
book = Book.new(name: 'foo')
book.authors << Author.new(name: 'bar')
book.save
但是,我有一个复杂的错误,它涉及到一些在我期望的时候不会自动保存的东西。所以,我想通过检查 book
来调试验证我认为将要保存的内容实际上会被保存。TL;博士;
保存关联时检查什么内部状态?我假设模型有一个内部实例变量,如
associations_to_save
关联会在创建时添加到其中。然后,当模型被保存时,它会遍历这些关联并保存它们。
最佳答案
不幸的是,没有像associations_to_save 这样的东西。然而,有一些规则说明什么时候保存。你可以在这里找到:http://guides.rubyonrails.org/association_basics.html .得分:4.1.5 (belongs_to)、4.2.5 (has_one)、4.3.4 (has_many) 和 4.4.4 (habtm)。
更新:
在 has_many 关联的情况下,如果 child.new_record?返回 true(子项尚未保存到 db),或者外键列需要更新。这就是为什么:
关于ruby-on-rails - ActiveRecord 何时会保存关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703036/