删除父记录时,accepted_nested_attributes_for会自动删除子记录吗?

时间:2014-10-22 02:27:46

标签: ruby-on-rails ruby-on-rails-3

以下是有关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

我们的问题是,如果删除了一本书记录,作者的子记录和页面会随着书籍记录自动删除吗?或者我们必须明确删除控制器中的子记录。

1 个答案:

答案 0 :(得分:1)

不,您需要设置dependent密钥。

has_many :pages, dependent: :destroy

正如OP所指出的,delete_all还有另一种选择。不同之处在于delete_all不会触发模型的before_destroy回调,只会从数据库中删除它们。

这是有益的,因为它不需要Rails将DB对象加载到Ruby中,这很慢,但是无论你定义的回调如何,它都会删除它们。