0

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

我该怎么做?

非常感谢!

4

1 回答 1

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

于 2012-09-11T18:26:09.947 回答