0

モデルにはこれら 2 つのメソッドがあります。1 つのメソッドは、単一の CatalogItem facebook のような数を検索し、別のメソッドは、すべてのアクティブな CatalogItems をループして、前述の方法を使用してそれらのような数を見つけます。

アクティブなすべての Facebook のいいね! を実行するにはしばらく時間がかかります... 300 ~ 1000 個のオブジェクトがループする可能性があります。だから私はこれをある種のcronに移動したいと思います。

私は、CatalogItem に cached_fb_count という列を追加し、 そのタスクが実行されるたびにその列に書き込むようにself.facebook_likesを適応させるべきだと考えていました。

これは正しいアプローチですか?そのタスクが 2 時間ごとに実行されているとしたら、どのように見えるでしょうか?

def self.facebook_likes
  self.active.each_with_index do |i, index|
    _likes = i.facebook_like_count
    i.update_attribute(:cached_likes, _likes)
    # puts "#{index+1}   Likes:  #{_likes}  ###########   ID:  #{i.id}  "
  end
end

def facebook_like_count
  item_like_count = JSON.parse(open("https://api.facebook.com/method/fql.query?query=select%20like_count%20from%20link_stat%20where%20url='https://www.foobar.com/catalog_items/#{self.id}'&format=json").read).first.flatten[1]
  item_like_count = item_like_count + 1 if item_like_count > 0 
end
4

2 に答える 2

0

セットアップが非常に簡単な場合はいつでも使用してください。ここにリンクがあります:https://github.com/javan/whenever

于 2013-09-13T05:06:32.930 に答える