另一种方法完成后运行方法延迟作业轨道3

时间:2012-09-11 17:52:48

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

我正在使用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

我怎么能这样做?

非常感谢!

1 个答案:

答案 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,因为此时您已经在后台作业中运行了?