पोस्ट करने के लिए निर्दिष्ट करते समय मैं यहां एक नुकसान में थोड़ा सा हूं।
मैं बस एक उपयोगकर्ता परिभाषित समय पर, चेकइन में देरी करने की कोशिश कर रहा हूं। मैं इसे यथासंभव सरल बनाना चाहता हूं।
संपादित करें: हल, नीचे देखें।रेल - पैरामीटर में 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
मैं क्या याद आ रही है? उपयोगकर्ता ने देरी से अनुरोध किए जाने के साथ, मैं इस देरी की नौकरी कैसे कर सकता हूं?
धन्यवाद!
अद्यतन
धन्यवाद नीचे @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