以下是有关accepts_nested_attributes_for的Rails 3.2 api的示例:
class Book < ActiveRecord::Base
has_one :author
has_many :pages
accepts_nested_attributes_for :author, :pages
end
我们的问题是,如果删除了一本书记录,作者的子记录和页面会随着书籍记录自动删除吗?或者我们必须明确删除控制器中的子记录。
答案 0 :(得分:1)
不,您需要设置dependent
密钥。
has_many :pages, dependent: :destroy
正如OP所指出的,delete_all
还有另一种选择。不同之处在于delete_all
不会触发模型的before_destroy
回调,只会从数据库中删除它们。
这是有益的,因为它不需要Rails将DB对象加载到Ruby中,这很慢,但是无论你定义的回调如何,它都会删除它们。