我正在为大学项目创建一个facebook-app,我正在尝试将所有朋友存储在数据库中.通过使用API语法"我/朋友"我得到一个facebook响应看起来像这样:
{"data"=>[{"name"=>"Albert Einstein", "id"=>"11111111"}, {"name"=>"Max Mustermann", "id"=>"222222222"}, {"name"=>"Just Another Name", "id"=>"333333333"}]}
Run Code Online (Sandbox Code Playgroud)
我相信它是一个json对象,但我不确定.
问题:如何保存数据,我需要一个包含我朋友的所有用户ID的数据库.
谢谢!
编辑:
嘿,这就是我所寻找的.但我仍然得到一个错误,不知道为什么.我的代码:
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
Run Code Online (Sandbox Code Playgroud)
我得到一个Heroku错误(我们很抱歉,但出了点问题.)
你有两个选择 -
选项1-
您可以创建属于users表的friends表.如果用户有200个朋友,它将通过has_many-belongs_to关系在所有属于该用户的朋友表中创建200个条目.对于存储数据,你只需要迭代facebook朋友哈希然后单独保存它们
优点:你可以单独搜索任何朋友.
缺点:会有很多朋友条目.如果有人有很多朋友(比如500-700),拯救他们需要时间.将为共同的朋友创建重复条目.
选项2
您可以在users表中添加friends列,并在user.rb中声明
serialize :friends
Run Code Online (Sandbox Code Playgroud)
这样,您只需将哈希对象传递给用户表的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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1477 次 |
最近记录: |