1

ユーザーがFacebookアカウントでログインできるRubyonRailsアプリがあります。ユーザーとそのFacebookデータのリストを表示できるようにしたいと思います。私はこれを達成することができましたが、各ユーザーの名前のリクエストを送信する必要があり、これをバッチ操作として実行したいと思います。これをユーザーモデルにどのように組み込むことができますか?

ユーザーモデル

class User < ActiveRecord::Base
  attr_accessible :uid

  def facebook_name
    Koala::Facebook::API.new.get_object(uid)["name"].to_s
  end
end

非効率的なコードの例

users = Users.all

users.each do |user|
  puts user.facebook_name
end
4

1 に答える 1

4

バックグラウンドタスク(https://github.com/collectiveidea/delayed_jobなど)を使用して、データベースにデータを入力します。

例えば

class User
 after_create :delayed_populate

 def populate_from_facebook
   self.facebook_name = Koala::Facebook::API.new.get_object(uid)["name"].to_s
 end

 def delayed_populate
   delay.populate_from_facebook
 end 
end

次に、それを実行すると、フィールドがDBにキャッシュされるため、それらを反復処理するのは通常のモデルデータベースになります。別のHTTPリクエストに応答しているときにHTTPapiリクエストを作成することは本当に望ましくありません。

于 2013-01-31T20:02:32.490 に答える