0
我一直想做Delayed :: Job来做fbLikes(我在StackOverFlow上发布了很多内容,但仍然没有解决问题)我的表格n数据库有名称,id,fbLikes,fbId,url。 这是我的程序步骤。 [首页]公司信息 - >创建公司[插入公司信息] - >保存fbId,名称,编号,网址但不是FBLIKES - >重定向到首页[after_save更新之前添加的公司的fbLikes]DELAYED_JOB延迟作业中的Update_attribute无法正常工作,表未更新
我不知道我的延期工作是否正常工作,因为我的模型中的fbLikes仍然是空白的,没有更新最新的fbLikes。我不确定是否有更好的方法来做到这一点。 对于“耙工:工作”,控制台中没有后台工作显示。
[MODEL company.rb]
require "delayed_job"
require "count_job.rb"
after_save :fb_likes
def fb_likes
Delayed::Job.enqueue(CountJob.new(self.id))
end
[LIB/count_job.rb]
require 'net/http'
require 'company.rb'
class CountJob < Struct.new(:id)
def perform
@company = Company.find(id)
uri = URI("http://graph.facebook.com/#{@company.fbId}")
data = Net::HTTP.get(uri)
@company.fbLikes= JSON.parse(data)['likes']
@company.save!
end
end
我注意到的一点是你使用了CountJob.new(@count),但是你的CountJob类没有定义任何初始化器。你没有得到例外吗?另外,如果在delayed_job运行之前创建了另一家公司,会发生什么情况?也许你应该将ID传递给CountJob并将其排入create方法中。 – gmalette 2012-04-21 16:53:43
我尝试了很多方法来做到这一点(无论是否通过值或模型或页面控制器中的延迟作业),但仍然无济于事。 – 2012-04-22 00:32:16
检查数据库是否创建了作业,是否有任何last_error。 – gmalette 2012-04-24 19:00:02