【发布时间】:2009-04-13 09:28:24
【问题描述】:
我有一系列想要级联销毁的 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 时,我希望计划项目及其所有相关任务都被删除。但是,只有计划项目被删除,计划任务仍然存在。
这不是缓存问题,因为记录仍在数据库中。此外,在数据库中肯定会创建单独的任务,其中 schedule id 作为项目 id 和它们自己的唯一 id。
回调仍然会在克隆对象上触发吗?我是不是漏了个小把戏?
【问题讨论】:
标签: ruby-on-rails activerecord associations callback