我有一系列想要级联销毁的 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
其中 Project 是项目的定义, Task 是该项目上的任务的定义, Schedule a has_many :through 将原始项目链接到另一个项目,这是原始项目的计划。
当我创建一个日程表时,我正在对原始项目进行深度克隆(即日程表是原始项目的克隆,日程表上的每个任务都是原始日程表上的任务的克隆)。
当我执行 schedule.destroy 时,我希望计划项目及其所有相关任务都被删除。但是,仅删除了计划项目,保留了计划任务。
这不是缓存问题,因为记录仍在数据库中。此外,在数据库中肯定有单独的任务被创建,日程 ID 作为项目 ID,它们自己的唯一 ID。
回调仍然会在克隆对象上触发吗?我在这里错过了一个技巧吗?