我需要做一个延迟的工作来计算模型中的fbLikes,但我有“undefined send_later()方法”的错误报告。有没有办法在模型中对我的fb_likes功能做延迟工作?
==============================最新================ ===================================
这是我项目中的最新代码。事情仍然相同,fb_likes不显示喜欢计数。
[Company.rb] -model
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
[配置/ 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----
答案 0 :(得分:3)
默认情况下不需要库文件。
count_job.rb
。使用camelCase获取文件名是疯狂的,会以不可预测的方式烧毁你。require 'count_job.rb'
答案 1 :(得分:0)
一种方法是创建一个将排队的单独工作程序,运行以获取更新的模型并在其上调用其fb_likes方法,但该方法需要公开。或者将逻辑带入工人本身。