我有一系列我想级联销毁的ActiveRecord对象,但是一些对象没有被删除。克隆是否会影响activerecord回调?
基本上我有如下: -
class Project < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
has_many :schedules, :dependent => :destroy
has_many :project_schedules, :through => :schedules, :class_name => "Project", :dependent => :destroy
end
class Schedule < ActiveRecord::Base
belongs_to :project_schedule, :class_name => "Project"
belongs_to :project
end
class Task < ActiveRecord::Base
belongs_to :project
end
,其中项目是一个项目的定义,任务对项目任务的定义,并排定的has_many:通过原来的项目链接到另一个项目,这是原始项目的时间表。
当我创建一个时间表时,我深入克隆了原始项目(即时间表是原始项目的克隆,并且时间表上的每个任务都是原始时间表上任务的克隆)。
当我做一个schedule.destroy时,我会期待schedule项目及其所有相关任务被删除。但是,只有计划项目被删除,计划任务依然存在。
这不是缓存问题,因为记录仍在数据库中。此外,在数据库中确实有独立的任务,其中包含作为项目标识和他们自己的唯一标识的日程标识。
回调仍然会触发克隆对象吗?我在这里错过了一个诡计吗?
谢谢,迈克尔。你说得对,我错了。我会看看使用after_delete回调。非常感谢。 – 2009-04-13 12:34:36