【发布时间】:2011-08-26 17:12:50
【问题描述】:
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”字段中。
上面的代码正在运行,并且作业在正确的日期执行。
但在某些情况下,我首先创建雷达对象并将一些作业发送到延迟作业队列。之后我更新此对象并将另一个作业发送到延迟作业。
这是错误的行为,因为我不想在正确的时间只执行一次作业。在这个实现中,我将执行 2 个作业。如何删除以前的作业,以便只执行更新的作业?
Rails 3.0.7
Delayed Job => 2.1.4 https://github.com/collectiveidea/delayed_job
ps:对不起我的英语我尽力了
【问题讨论】:
标签: ruby-on-rails ruby delayed-job