如何从LinkedIn解析Mash以创建Ruby对象

时间:2011-11-19 22:23:28

标签: ruby-on-rails parsing linkedin params

我使用pengwynn的LinkedIn gem从LinkedIn获取身份验证。一切正常,我在回调中得到一个Mash,如下所示:

#<LinkedIn::Mash all=[#<LinkedIn::Mash company=#<LinkedIn::Mash id=1422 industry="Banking"    
 name="Company" size="10,001+ employees" ticker="ABC" type="Public Company"> id=2851554 
 is_current=true start_date=#<LinkedIn::Mash month=12 year=2008> summary="" title="Boss">] total=1>

如何将其解析为类似于Rails参数的东西,以便从中创建一个新对象?

谢谢。

2 个答案:

答案 0 :(得分:3)

当您收到来自LinkedIn的任何类型的连接列表时,您需要从all进入列表。在您从LinkedIn收到的对象上,您有{all, total}total将为您提供数组中的对象数量,all将为您提供所有对象。因此,如果您想将第一家公司变为哈希,您可以致电object.all.first.to_hash。您可以通过执行object.all.each {|c| # your block}来遍历所有这些内容。

如果你自己的Rails模型匹配从linkedin gem返回的对象,你可以这样做:

companies.all.each do |company|
  Company.create(company.to_hash)
end

如果他们没有映射1:1,您只需选择所需的字段:

companies.all.each do |company|
  c = Company.new
  c.name = company.name
  c.year_founded = company.start_date.year
  c.ticker = company.ticker
  # etc. etc. etc.
  c.save
end

答案 1 :(得分:2)

您可以致电.to_hash将Mash变为哈希(如params)。

来源:

https://github.com/intridea/hashie/blob/master/lib/hashie/hash.rb