ActiveRecord:destroy\u是否对相关记录执行回调?

ActiveRecord:destroy\u是否对相关记录执行回调?,activerecord,Activerecord,我有四种型号: class Order < WebDatabase has_many :shipments class Shipment < WebDatabase belongs_to :order has_many :line_items, :order => "id", :dependent => :destroy class LineItem < WebDatabase belongs_to :shipment h

我有四种型号:

class Order < WebDatabase
    has_many :shipments

class Shipment < WebDatabase
    belongs_to :order
    has_many :line_items, :order => "id", :dependent => :destroy

class LineItem < WebDatabase
    belongs_to :shipment
    has_many :line_item_messages, :dependent => :destroy

class LineItemMessage < WebDatabase
    belongs_to :line_item
类顺序“id”,:依赖=>:销毁
类LineItem:销毁
类LineItemMessage
因此,如果我做了
@order.shippings.destroy\u all
,是否会有一个销毁链,其中
@order.shippings.line\u项目
会被销毁,而
@order.shippings.line\u项目.line\u项目
也会因为:dependent=>:destroy而被销毁

是的

来自(重点是我自己的)

全部销毁(条件=零) 公众的 通过实例化每个记录并调用其销毁方法销毁与条件匹配的记录。执行每个对象的回调(包括:依赖关联选项和销毁前/销毁后观察者方法)。返回已销毁对象的集合;每个都将被冻结,以反映不应进行任何更改(因为它们无法持久化)

注意:当您一次删除多条记录时,实例化、回调执行和删除每条记录可能会非常耗时。它为每个记录生成至少一个SQL DELETE查询(或可能更多,以强制执行回调)。如果要快速删除多行,而不考虑它们的关联或回调,请改用delete_all


如果有帮助,请检查答案,以便将其排除在“未答复”队列之外:)