这是Rails 3.2 api上用于accepts_nested_attributes_for的示例:
class Book < ActiveRecord::Base
has_one :author
has_many :pages
accepts_nested_attributes_for :author, :pages
end
我们的问题是,如果删除某个书记录,那么作者和页面的子记录会随该书记录一起自动删除吗?或者我们必须在控制器中显式删除子记录。
不,您需要设置dependent
密钥。
has_many :pages, dependent: :destroy
正如OP指出的,还有另一种选择delete_all
。区别在于delete_all
不会触发模型的before_destroy
回调,只会从数据库中删除它们。
这是有益的,因为它不需要Rails将数据库对象加载到Ruby中,这很慢,但是无论您定义了什么回调,它都会删除它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句