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

Ruby on rails 如何将facebook好友存储到DB(新手),ruby-on-rails,facebook,Ruby On Rails,Facebook,我正在为大学项目创建一个facebook应用程序,我正在尝试将我所有的朋友存储在数据库中。 通过使用API语法“me/friends”,我得到的facebook回复如下所示: {"data"=>[{"name"=>"Albert Einstein", "id"=>"11111111"}, {"name"=>"Max Mustermann", "id"=>"222222222"}, {"name"=>"Just Another Name", "id"=>"

我正在为大学项目创建一个facebook应用程序,我正在尝试将我所有的朋友存储在数据库中。 通过使用API语法“me/friends”,我得到的facebook回复如下所示:

{"data"=>[{"name"=>"Albert Einstein", "id"=>"11111111"}, {"name"=>"Max Mustermann", "id"=>"222222222"}, {"name"=>"Just Another Name", "id"=>"333333333"}]}
我相信这是一个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    
我收到一个Heroku错误(很抱歉,出现了问题。)

您有两个选择-

选项1-

您可以创建一个属于users表的friends表。如果一个用户有200个朋友,它将在friends表中创建200个条目,所有条目都通过has\u Multi-Bowns\u to关系属于该用户。为了存储数据,您只需迭代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
你有两个选择-

选项1-

您可以创建一个属于users表的friends表。如果一个用户有200个朋友,它将在friends表中创建200个条目,所有条目都通过has\u Multi-Bowns\u to关系属于该用户。为了存储数据,您只需迭代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

快速回答的thx rtdp。我想像选项1那样做。但我只需要“朋友”桌,一秒钟也不需要。我的想法是通过使用“验证唯一性”来避免重复条目。我的问题恰恰是通过facebook的json“哈希”进行迭代。我想我必须在每个街区使用一个?还是在保存到DB之前必须将json转换为其他格式?你能给我一个示例代码吗?对不起,我对RubyonRails真的很陌生。更新了我的答案以获取代码示例。你已经解决了这个问题,然后接受这个答案thx rtdp作为快速答案。我想像选项1那样做。但我只需要“朋友”桌,一秒钟也不需要。我的想法是通过使用“验证唯一性”来避免重复条目。我的问题恰恰是通过facebook的json“哈希”进行迭代。我想我必须在每个街区使用一个?还是在保存到DB之前必须将json转换为其他格式?你能给我一个示例代码吗?对不起,我对RubyonRails真的很陌生。更新了我的答案以获取代码示例。你解决了这个问题,然后接受这个答案记住接受(检查)一个解决你问题的答案!记住接受(检查)一个能解决你问题的答案!