2010-01-24 58 views

回答

2

根據我的測試,他們可以:

模型Machine

class Machine < ActiveRecord::Base 
    def perform 
    Delayed::Job.enqueue Secondary.create! 
    end 
end 

模型Secondary

class Secondary < ActiveRecord::Base 
    def perform 
    logger.info("Inside secondary's perform method (WIN)") 
    Proof.create! 
    end 
end 

從控制檯:

延遲::工作.enqueue馬赫ine.create!

這最終創建了一個Proof的實例並且記錄「Inside secondary's ...」。

+0

我的延遲工作也適用於開展另一項延期工作作爲其運作的一部分。 –

+0

是的,他們絕對可以。在某些情況下,像這樣「連鎖」工作很有用,但大多數情況下,只有一個作業可以在模型的狀態轉換時進行轉換,以便可以在當前點重新開始作業工作流程如果失敗。 – betamatt

-1

我在send_later調用的方法中調用send_later的簡單測試表明,它不起作用。

+0

也許只是'send_later'不允許這樣做。我在腳本/控制檯中測試過。 –

相關問題