首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >克隆会影响activerecord回调吗?

克隆会影响activerecord回调吗?
EN

Stack Overflow用户
提问于 2009-04-13 09:28:25
回答 1查看 270关注 0票数 0

我有一系列想要级联销毁的ActiveRecord对象,但其中一些对象没有被删除。

基本上,我有以下几点:

代码语言:javascript
复制
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项目和它的所有相关任务都会被删除。但是,只有计划项目被删除,计划任务仍保留。

这不是缓存问题,因为记录仍在数据库中。此外,在数据库中肯定有单独的任务正在创建,其中schedule id作为项目id,以及它们自己的唯一id。

回调是否仍会在克隆对象上触发?我是不是错过了一个小把戏?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-13 12:00:13

从您的类描述来看,当您销毁一个调度对象时,我不希望看到级联删除。如果您删除一个项目对象,那么Rails应该通过子任务和时间表(不是很确定项目时间表在这里),并删除记录,因为:dependent => :destroy选项。任务和计划是Project的子项,不会导致删除父项。

如果您想在删除计划时删除父项目,我可能会考虑编写一个after_delete回调。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/743439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档