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

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

#<LinkedIn::Mash all=[#<LinkedIn::Mash company=# id=2851554 is_current=true start_date=# summary="" title="Boss">] total=1> 

我怎样才能将它解析为类似于Rails参数的东西,以便从中创建一个新对象?

谢谢。

当您从LinkedIn收到任何类型的连接列表时,您需要从all列表中获取列表。 在您从LinkedIn收到的对象上,您有{all, total}total将为您提供数组中对象的数量, all将为您提供所有对象。 因此,如果您想将第一家公司变为哈希,您可以调用object.all.first.to_hash 。 您可以通过执行object.all.each {|c| # your block}来迭代所有这些 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 

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

资源:

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