【发布时间】:2012-04-22 09:02:43
【问题描述】:
我需要做一个延迟的工作来计算模型中的 fbLikes,但我有“未定义的 send_later() 方法”的错误报告。有什么方法可以对模型中的 fb_likes 函数进行延迟工作吗?
===============================最新================ ====================================
这是我项目中的最新代码。还是一样,fb_likes 不显示点赞数。
[Company.rb]-模型
require "delayed_job"
require "count_job.rb"
class Company < ActiveRecord::Base
before_save :fb_likes
def fb_likes
Delayed::Job.enqueue(CountJob.new(self.fbId))
end
end
[config/lib/count_job.rb]
class CountJob<Struct.new(:fbId)
def perform
uri = URI("http://graph.facebook.com/#{fbId}")
data = Net::HTTP.get(uri)
self.fbLikes = JSON.parse(data)['likes']
end
end
[控制器]
def create
@company = Company.new(params[:company])
if @company.save!
flash[:success] = "New company successfully registered."
----and other more code----
【问题讨论】:
-
您现在描述的错误与以前不同。请为未定义的 send_later 添加堆栈跟踪(不应调用此方法)
-
你的工作也分配给
self.fbLikes,它不存在。您不能在作业类上保存任何数据,应该将类似的数据存储在有用的地方。
标签: ruby-on-rails ruby ruby-on-rails-3 delayed-job