通过活动作业处理依赖性破坏

hel*_*ion 5 dependent-destroy ruby-on-rails-4 rails-activejob

我有几个有很多孩子的模特.依赖性破坏变得非常沉重.任何人都知道如何将依赖性破坏与活跃的工作联系起来?或者,我唯一的选择是通过父模型上的回调删除依赖的销毁和角色我自己的工作?

lsd*_*sdr 5

您可以创建一个工作程序来销毁模型异步并将其排入队列.就像是:

class ComplexModelDeletion < ActiveJob::Base
  def perform(model)
    model.destroy!
  end
end
Run Code Online (Sandbox Code Playgroud)

模型可能是这样的:

class Model < ActiveRecord::Base
  def destroy_later
    ComplexModelDeletion.enqueue(self)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,每当你需要杀死这个模型的一个实例时,你可以调用Model#destroy_later它来排队.您甚至可以在将对象排队之前将其标记为已删除,以防止在实际终止之前从DB中检索该对象.

不确定这是否会按原样运行,只是为了让您了解自己可以做些什么.