如何从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