ruby on rails-如何将facebook好友存储到DB(新手)



我正在为大学项目创建一个facebook应用程序,并试图将我所有的朋友存储在数据库中。通过使用API-syntax"我/朋友",我得到了一个脸书回复,看起来像这样:

{"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-

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

选项2

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

serialize :friends

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

更新

根据您上面的代码示例

  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

最新更新