我的模型中有这两种方法。一种方法查找单个 CatalogItem facebook like count,另一种方法遍历所有活动 CatalogItems 并使用上述方法找到它们的类似计数。
浏览所有活跃的 facebook 喜欢需要一段时间……它可能会循环 300-1000 个对象;所以我想把它移到某种cron,或者你们建议的任何东西。
我在想我应该向 CatalogItem 添加一个名为 cached_fb_count 的列,并在该任务运行时调整 self.facebook_likes以写入该 colmn。
这是正确的方法吗?如果该任务每 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