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
如果有帮助,请检查答案,以便将其排除在“未答复”队列之外:)