DELAYED_JOB Update_attribute в отложенном задании не работает, таблица не обновлена

Я хотел сделать Delayed::Job, который должен выполнять fbLikes (я много публикую на StackOverFlow, но проблема еще не решена) Моя база данных таблицы n имеет имя, id, fbLikes, fbId, url. Вот мои шаги для программы. [Домашняя страница] список компаний -> Создать компанию [Вставить информацию о компании] -> Сохранить fbId, name, id, url НО НЕ FBLIKES -> перенаправить на HomePage [after_save Обновить fbLikes для предыдущей добавленной компании]

Я не уверен, работает ли моя отложенная работа или нет, потому что мои fbLikes в моей модели все еще пустые и не обновлены последними версиями fbLikes. Я не уверен, что есть лучший способ сделать это. Для "граблей заданий: работа" в консоли не отображается фоновая работа.

[МОДЕЛЬ company.rb]

require "delayed_job"
require "count_job.rb"
after_save :fb_likes
def fb_likes    
    Delayed::Job.enqueue(CountJob.new(self.id))
end

[Библиотека /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

1 ответ

Решение

[МОДЕЛЬ company.rb]

require "delayed_job"
require "count_job.rb"
after_save :fb_likes
def fb_likes    
    Delayed::Job.enqueue(CountJob.new(self.id))
end

[Библиотека /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
Другие вопросы по тегам