在其他方法完成后运行方法延迟作业 rails 3
Posted
技术标签:
【中文标题】在其他方法完成后运行方法延迟作业 rails 3【英文标题】:run method after the other method is finished delayed job rails 3 【发布时间】:2012-09-11 17:52:47 【问题描述】:我正在使用 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
我该怎么做?
非常感谢!
【问题讨论】:
我没试过,但是你的第一种方法可以是在它的末尾设置第二种方法的方法吗? 谢谢@MrDanA 你能写一个例子吗?谢谢! 从您的inprogress_overtime
方法内部 - 添加来自上述 2º Method
的代码?
抱歉,它对我不起作用 :(。我添加了我的模型 Oder 的方法。谢谢!
【参考方案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 延迟,因为此时您已经在后台作业中运行?
【讨论】:
以上是关于在其他方法完成后运行方法延迟作业 rails 3的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ruby on Rails 中完成延迟作业后执行 ajax 回调?