0
私は、fBLikesを行うDelayed :: Job(私はStackOverFlowでたくさん投稿しますが、まだ問題は解決していません) nデータベースには名前、ID、fbLikes、fbId、urlがあります。 これはプログラムのための私のステップです。 [ホームページ]会社一覧 - >会社[会社に関する情報を挿入]作成 - >保存FBID、名前、ID、URLではなくFBLIKES - >ホームページにリダイレクトを[更新after_save前の追加会社のfbLikes]DELAYED_JOB遅延ジョブのUpdate_attributeが機能していない、テーブルが更新されていない
モデルの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
私が気づくのは、CountJob.new(@count)を使用したことですが、CountJobクラスでは初期化子が定義されていません。あなたは例外を取得していませんか?また、delayed_jobが実行される前に別の会社が作成されるとどうなりますか?おそらく、IDをCountJobに渡して、それをcreateメソッドにエンキューする必要があります。 – gmalette
私はこれを行うために多くの方法を試しました(値を渡すかどうか、またはモデルやページコントローラの遅れたジョブ)。 –
ジョブが作成され、last_errorがある場合は、データベースをチェックしてください。 – gmalette