使用常规has_many
,可以选择:dependent => :destroy
在删除父记录时删除关联。使用has_many :through
,可能有其他父母与子记录相关联,因此:dependent => :destroy
没有任何影响。
您如何确保子记录在上一次 HMT 关联中被孤立后被删除?
使用常规has_many
,可以选择:dependent => :destroy
在删除父记录时删除关联。使用has_many :through
,可能有其他父母与子记录相关联,因此:dependent => :destroy
没有任何影响。
您如何确保子记录在上一次 HMT 关联中被孤立后被删除?
我找到的解决方案似乎是一个after_destroy
回调,例如:
class Parent < ActiveRecord::Base
has_many :children, :through => :parentage
after_destroy :destroy_orphaned_children
private
def destroy_orphaned_children
children.each do |child|
child.destroy if child.parents.empty?
end
end
end
在连接模型上,使用“belongs_to :model,dependent: :destroy”
例如,如果您想在医生被销毁后销毁患者,并且医生通过约会拥有_many 个患者
Class Appointment
belongs_to :doctor
belongs_to :patient, dependent: :destroy
Class Doctor
has_many :appointments, dependent: :destroy
has_many :patients, through: :appointments
Class Patient
has_many :appointments
has_many :doctors, through: :appointments