如何加入两个记录并返回表数据?

时间:2015-08-18 18:17:10

标签: ruby-on-rails ruby facebook koala koala-gem

我正在使用宝石考拉来获取Facebook好友。

如何将这些结果与数据库用户联系起来?

facebook = Koala::Facebook::API.new(params[:facebook_access_token])
friends = facebook.get_connections("me", "friends")

返回

[
  {
    "name": "Mick Fanning",
    "id": "9523891481361"
  },
  {
    "name": "Gabriel Medina",
    "id": "9523891483211"
  }
]

点子:

join = friends.map {|u| {
  :user => user = User.where(provider_uid: u['id']).first,
  :provider_uid => u['id'],
  :name => u['name']
}}

这将产生大量查询......

如何加入两个记录并返回表数据?

1 个答案:

答案 0 :(得分:1)

无论如何,似乎我有你的需要。先做查询。

 users = User.where(provider_uid: friends.map { |h| h['id'] })
 users.map do |u|
   {
       :user => u,
       :provider_uid => u.id,
       :name => friends.find { |f| f['id'] == u.id }['name']
   }
 end