class Radar
include Mongoid::Document
after_save :post_on_facebook
private
def post_on_facebook
if self.user.settings.post_facebook
Delayed::Job.enqueue(::FacebookJob.new(self.user,self.body,url,self.title),0,self.active_from)
end
end
end
class FacebookJob < Struct.new(:user,:body,:url,:title)
include SocialPluginsHelper
def perform
facebook_client(user).publish_feed('', :message => body, :link => url, :name => title)
end
end
Я хочу выполнить метод post_on_facebook на определенную дату.Я храню эту дату в поле «active_from».
Код выше работает, и задание выполняется в правильную дату.
Но в некоторых случаях я сначала создаю объект Radar и отправляю задание в отложенное заданиеочередь.После этого я обновляю этот объект и отправляю другое задание в отложенное задание.
Это неправильное поведение, потому что я не хочу выполнять задание только один раз в правильное время.В этой реализации у меня будет 2 задания, которые будут выполнены.Как я могу удалить предыдущее задание, чтобы было выполнено только обновленное?
Rails 3.0.7
Delayed Job => 2.1.4 https://github.com/collectiveidea/delayed_job
ps: извините за мой английский, я стараюсь изо всех сил