2011-06-22 16 views
1

私は大学のプロジェクト用のFacebookブックを作成しています。私はすべての友達をDBに保存しようとしています。Facebookに友達をDB(初心者)に保存する方法

{"data"=>[{"name"=>"Albert Einstein", "id"=>"11111111"}, {"name"=>"Max Mustermann", "id"=>"222222222"}, {"name"=>"Just Another Name", "id"=>"333333333"}]} 

が、私はそのJSONオブジェクトを信じて、しかし、私はよく分からない:API-構文を使用することで 「私は/友人は」私はFacebookの-応答は次のように探してもらいます。

質問:データを保存するにはどうすればよいですか、友人のすべてのユーザーIDを持つDBが必要です。

Thx!

編集:

こんにちは、これは私が検索したものです。しかし、私はまだエラーが発生し、理由を知らない。 マイコード:

def insert_1 
fb_friends = rest_graph.get('me/friends') 
fb_friends[:data].each do |f| 
    @friend = Model.new(:name => f["name"]) 
    @friend.save 
end 
end  

は、私が(申し訳ありませんが、何かが間違っていた。)Herokuのエラーを取得

+0

上記のコードの例のように

更新

は(チェック)あなたの問題を解決する答えを受け入れることを忘れないでください! –

答えて

6

次の2つのオプションがあり -

オプションの1-

ユーザーテーブルに属するフレンドテーブルを作成することができます。ユーザーに200人の友人がいる場合、has_many-belongs_to関係を介してユーザーに属するすべてのfriendsテーブルに200のエントリが作成されます。データを保存するには、Facebookの友達のハッシュを繰り返し処理してから別々に保存するだけです。
プロ:友だちを別々に検索することができます。
短所:非常に多くの友人のエントリがあります。誰かが多くの友人(500-700など)を持っている場合、それらを保存するには時間がかかります。相互の友人のための繰り返しの記入項目が作成されます。

オプション2

あなたのuser.rb

serialize :friends 

この方法で、ユーザーテーブルで友達の列を追加し、これを宣言することができ、あなたはただの友達にハッシュオブジェクトを渡す必要がありますユーザーテーブルの属性、そしてレールはそれをyaml形式で保存します。 @ user.friendsを実行すると、railsはyaml形式のデータを再びハッシュオブジェクトに変換して返します。
プロ:すべてのユーザーを保存するクエリは1つだけです。このハッシュを繰り返して、すべての友人のリストを表示することができます。
短所:これらを個別に更新することはできません。すべてを更新します。あなたの友人に関連して他の情報を保存したい場合にはうまくいかない。

fb_friends = #your logic to get data as shown above. 
    fb_friends[:data].each do |f| 
    @friend = Friend.new(:name => f["name"],:fb_user_id => f["id"])#creating Friend model obj. 
    @friend.save 
    end 
+0

速い答えのためのthx rtdp。私はオプション1のようにしたいと思っています。しかし、私は "友人"テーブルだけを必要としません。私の考えは、 "一意性の検証"を使用して重複するエントリを持たないことです。私の問題は、まさにfacebookのjson- "hash"による繰り返しです。私は各ブロックを使用しなければならないと思いますか?またはDBに保存する前にjsonを別の形式に変換する必要がありますか?サンプルコードを教えていただけますか?申し訳ありません、私は本当にレール上のルビーの新しいです。 – Michi

+0

はコード例のために私の答えを更新しました。あなたはこれを解決し、この答えを受け入れます。http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – rtdp

関連する問題