2012-09-11 2 views
0

지연이있는 실행 방법에 delayed_job 보석을 사용하고 있습니다.다른 방법이 완료된 후 실행 방법 지연된 작업 레일 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) 

내 클래스 주문을 이동 :

class Order 

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

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

end 

내가 어떻게 할 수 있습니다?

ver 많은 것을 감사드립니다!

+0

아직 시도하지는 않았지만 첫 번째 방법은 마지막에 두 번째 방법을 설정하는 방법 일 수 있습니까? – MrDanA

+0

@MrDanA 고맙습니다. 예제를 쓸 수 있습니까? 고맙습니다! – hyperrjas

+0

에서'inprogress_overtime' 메쏘드를 제거하십시오 - 위의'2º Method' 코드를 추가 하시겠습니까? – 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

관련 문제