在主要的延迟工作完成后进行呼叫挂接

时间:2018-07-10 10:45:13

标签: ruby-on-rails ruby delayed-job

我一直在我的应用程序中使用delay_job_active_record gem,在我的一个用例中,延迟工作完成后,我必须使用一个钩子来发送另一封电子邮件。 https://github.com/collectiveidea/delayed_job#hooks,如何在应用程序中覆盖它?。

目前我正以这种方式打电话

do_maintenance.delay(run_at: time).change_all_parts(batch_no)

do_maintenance是模型

1 个答案:

答案 0 :(得分:0)

此gem的钩子提供了作业的回调,但没有模型的回调。但是您可以在模型中定义自定义回调。该回调将在延迟方法之后调用:

class DoMaintenance < ApplicationRecord
  extend ActiveModel::Callbacks

  define_model_callbacks :change_all_parts, :only => [:after]

  after_change_all_parts :notify

  def change_all_parts
    run_callbacks :change_all_parts do
      #your delayed method
    end
  end
  handle_asynchronously :change_all_parts

  def notify
    #your code
  end
end