如何使用Ruby从具有多个条目的Facebook哈希中提取数据



我使用OmniAuth与Facebook连接。我正在提取各种信息,并且在只有一种类型的信息中提取信息没有问题。例如,要获取电子邮件地址,我只需将以下内容放在user.rb中:

user.email = auth["info"]["email"]

问题出在多个条目上。例如,对于教育,有两个结果。一所是一所名为Punahou学校的高中,另一所是一所名为伊利诺伊大学厄巴纳-香槟分校的学院。

education: 
    - !map:Hashie::Mash 
      school: !map:Hashie::Mash 
        id: "105510192816251"
        name: Punahou School
      type: High School
    - !map:Hashie::Mash 
      school: !map:Hashie::Mash 
        id: "163536409904"
        name: University of Illinois at Urbana-Champaign
      type: College

我能够使用以下命令拉动第一所学校:

if auth["extra"]["raw_info"]["education"]
    user.school = auth["extra"]["raw_info"]["education"][0]["school"]["name"]
end

这样做的问题是,它只拉了第一所学校,即高中。我在这里有几个问题:

  1. 如果我只想要学院,我怎么能让它拉动伊利诺伊大学厄巴纳-香槟分校?如果有一所高中和大学,我希望代码只选择大学的任何学校。
  2. 现在,假设我想要高中和大学。我将如何拉动两者,我将如何标记Punahou是高中,UIUC是大学?
  3. 如果有多个大学,我将如何提取最近的大学入学人数?

与 OmniAuth 和 LinkedIn 有类似的问题,遇到了您的问题,它帮助我想出了解决方案。LinkedIn的哈希以类似于Facebook上述行为的形式返回三个当前位置。将[0]更改为[1],它将在您的示例中拉动大学。对所需的每个条目使用单独的行。我发现LinkedIn哈希按顺序返回了三个当前位置,最新的条目位于[0]位置。

最新更新