我一直想做Delayed :: Job来做fbLikes(我在StackOverFlow上发了很多但仍然没有解决问题)我的表n数据库有name,id,fbLikes,fbId,url 。 这是我执行该程序的步骤。 [主页]公司列表 - >创建公司[插入公司信息] - >保存fbId,名称,ID,网址但不是FBLIKES - >重定向到HomePage [after_save更新以前添加的公司的fbLikes]
我不确定我的延迟工作是否有效,因为我的模型中的fbLikes仍然是空白的,并且没有使用最新的fbLikes更新。我不确定是否有更好的方法来执行此操作。 对于“rake jobs:work”,控制台中没有后台工作显示。
[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
答案 0 :(得分:0)
[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