2011-05-17 46 views
8

我在這裏有點茫然。
我只是試圖延遲簽入,例如,在用戶定義的時間。我希望儘可能簡單。
編輯:解決,見下文。Rails - 具有run_at參數的特定方法的延遲作業/指定何時發佈

class MyController < ApplicationController 

    def new_checkin 
    # default venue is "SubMate" 
    @venue_id = params[:venue_id] || "4c2c3acd8abca59355760120" 
    @time = params[:time] 
    @checkin = Delayed::Job.enqueue(self.perform_checkin, :run_at => @time.minutes.from_now) 
    end 

    def perform_checkin 
    foursquare.checkins.add(:venueId => @venue_id, :broadcast => "private") 
    end 

結果是奇怪:delayed_job的是保存,執行動作(不要求@time延遲),我仍然得到一個錯誤:

ArgumentError in MyController#new_checkin 
    Cannot enqueue items which do not respond to perform 

我缺少什麼?如何在用戶請求的延遲時間內執行延遲的工作?

謝謝!

UPDATE
感謝@Roman下面,不知道,你可以將參數傳遞給耽誤:

def new_checkin 
    @venue_id = params[:venue_id] 
    @time = params[:time] 
    @checkin = self.perform_checkin 
end 

def perform_checkin 
    foursquare.checkins.delay({:run_at => @time.minutes.from_now}).add(:venueId => @venue_id, :broadcast => "private") 
end 

回答

相關問題