我一直在我的应用程序中使用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是模型
答案 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