我正在使用delayed_job gem来延迟运行方法。
我想首先运行一个方法,当第一个方法完成时,运行第二个方法。
1º方法
Order.delay(queue: "Job", priority: 1, run_at: job.minutes_to_in_progress_overtime.minute.from_now).inprogress_overtime(job)
2º方法
Order.delay(queue: "Job", priority: 1, run_at: job.minutes_to_cancel_due_to_overtime.minute.from_now).canceled_overtime(job)
这是我的课程顺序:
class Order
def self.inprogress_overtime(job)
#actions goes here
end
def self.canceled_overtime(job)
#actions goes here
end
end
我怎么能这样做?
非常感谢!
答案 0 :(得分:1)
根据您的要求,我认为这很简单吗?
# enqueue the inprogress_overtime
Order.delay(queue: "Job", priority: 1, run_at: job.minutes_to_in_progress_overtime.minute.from_now).inprogress_overtime(job)
class Order
def self.inprogress_overtime(job)
# actions goes here
# now enqueue the canceled_overtime
Order.delay(queue: "Job", priority: 1, run_at: job.minutes_to_cancel_due_to_overtime.minute.from_now).canceled_overtime(job)
end
def self.canceled_overtime(job)
# actions goes here
end
end
注意:可能不需要延迟inprogress_overtime,因为此时您已经在后台作业中运行了?