如何将Facebook好友存放到DB(新手)

时间:2011-06-22 10:15:45

标签: ruby-on-rails facebook

我正在为大学项目创建一个facebook-app,我正在尝试将所有朋友存储在数据库中。 通过使用API​​语法“我/朋友”,我得到一个像这样的Facebook回复:

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

我相信它是一个json对象,但我不确定。

问题:如何保存数据,我需要一个包含我朋友的所有用户ID的数据库。

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错误(我们很抱歉,但出了点问题。)

1 个答案:

答案 0 :(得分:6)

您有两种选择 -

选项1 -

您可以创建属于users表的friends表。如果用户有200个朋友,它将通过has_many-belongs_to关系在所有属于该用户的朋友表中创建200个条目。对于存储数据,你只需要遍历facebook朋友哈希,然后分别保存每个 优点:您可以单独搜索任何朋友 缺点:会有很多朋友条目。如果有人有很多朋友(比如500-700),拯救他们需要时间。将为共同的朋友创建重复条目。

选项2

您可以在users表中添加friends列,并在user.rb

中声明
serialize :friends

这样,您只需将哈希对象传递给用户表的friends属性,rails就会以yaml格式为您保存。当您执行@ user.friends时,rails将再次将该yaml格式的数据转换为哈希对象并返回它。
优点:只有一个查询可以保存所有用户。您可以遍历此哈希以显示所有朋友的列表 缺点:您无法单独更新它们,您将一起更新。如果你想存储与用户朋友有关的其他信息,那就不好了。

更新

根据您上面的代码示例

  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