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 
+0

私が気づくのは、CountJob.new(@count)を使用したことですが、CountJobクラスでは初期化子が定義されていません。あなたは例外を取得していませんか?また、delayed_jobが実行される前に別の会社が作成されるとどうなりますか?おそらく、IDをCountJobに渡して、それをcreateメソッドにエンキューする必要があります。 – gmalette

+0

私はこれを行うために多くの方法を試しました(値を渡すかどうか、またはモデルやページコントローラの遅れたジョブ)。 –

+0

ジョブが作成され、last_errorがある場合は、データベースをチェックしてください。 – gmalette

答えて

0

[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 
関連する問題