首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails - AciveRecord用法:dependent => :destroy on condition

Rails - AciveRecord用法:dependent => :destroy on condition
EN

Stack Overflow用户
提问于 2011-05-19 03:08:24
回答 1查看 10.2K关注 0票数 21

基于条件销毁对象的所有从属对象的最佳/干式方法是什么??

例如:

代码语言:javascript
复制
class Worker < ActiveRecord::Base
 has_many :jobs , :dependent => :destroy
 has_many :coworkers , :dependent => :destroy
 has_many :company_credit_cards, :dependent => :destroy
end 

销毁时条件将为

代码语言:javascript
复制
if self.is_fired? 
 #Destroy dependants records
else
 # Do not Destroy records
end 

有没有办法在:dependent条件下使用Proc?我已经找到了单独销毁被依赖对象的方法,但这对于进一步的关联来说并不是干练和灵活的,

注意:这个例子是我编的。不是一个实际的逻辑

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-19 03:50:04

不是的。您应该删除:dependent => :destroy并添加after_destroy回调,您可以在其中编写任何您想要的逻辑。

代码语言:javascript
复制
class Worker < ActiveRecord::Base
  has_many :jobs
  has_many :coworkers
  has_many :company_credit_cards
  after_destroy :cleanup

  private
  def cleanup
    if self.is_fired?
      self.jobs.destroy_all
      self.coworkers.destroy_all
      self.company_credit_cards.destroy_all
    end
  end
end 
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6049806

复制
相关文章

相似问题

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