2012-09-11 48 views
0

我正在使用delayed_job gem用於延遲運行方法。其他方法完成後的運行方法延遲作業導軌3

我想先運行一個方法,當第一個方法完成時運行第二個方法。

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) 

何去何從我Order類:

class Order 

    def self.inprogress_overtime(job) 
    #actions goes here 
    end 

    def self.canceled_overtime(job) 
    #actions goes here 
    end 

end 

我如何能做到這一點?

非常感謝你!

+0

我還沒有嘗試過,但是您的第一個方法是在第一個方法的末尾設置第二個方法嗎? – MrDanA

+0

謝謝@MrDanA你能寫一個例子嗎?謝謝! – hyperrjas

+0

從'inprogress_overtime'方法中 - 添加上面的'2º方法'中的代碼? – house9

回答

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延遲可能不需要,因爲您已經在該點的後臺作業中運行?

+0

非常感謝:D。現在它工作正常:)。謝謝 – hyperrjas

相關問題