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
感謝羅馬,我不知道你可以傳遞參數。延遲 - 我更新了我的問題(解決)。 – Laurent 2011-05-17 17:51:05