Меня хотели выполнить Delayed::Job, чтобы выполнить fbLikes (я много публикую в StackOverFlow, но до сих пор не решил проблему). Моя таблица n базы данных имеет имя, идентификатор, fbLikes, fbId, url. Вот мои шаги для программы. [Домашняя страница] список компаний -> Создать компанию [Вставить информацию о компании] -> Сохранить fbId, имя, идентификатор, URL-адрес, НО НЕ FBLIKES -> перенаправить на домашнюю страницу [after_save Обновить fbLikes для предыдущей добавленной компании]
Я не уверен, работает ли моя отложенная работа или нет, потому что мои fbLikes в моей модели все еще пусты и не обновлены последними fbLikes. Я не уверен, что есть лучший способ сделать это. Для "rake jobs:work" в консоли не отображается фоновая работа.
[МОДЕЛЬ компании.рб]
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