Как разобрать Mash из LinkedIn, чтобы создать объект Ruby - PullRequest
4 голосов
/ 20 ноября 2011

Я использовал гем LinkedIn от pengwynn, чтобы получить аутентификацию от 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 ]

3 голосов
/ 20 ноября 2011

Когда вы получаете список подключений любого рода из LinkedIn, вам нужно попасть в список из all.На объекте, который вы получили от LinkedIn, у вас есть {all, total}.total даст вам количество объектов в массиве, all даст вам все объекты.Поэтому, если вы хотите превратить первую компанию в хеш, вы бы позвонили object.all.first.to_hash.Вы можете пройтись по всем из них, выполнив object.all.each {|c| # your block}.

Если ваши собственные модели Rails соответствуют объектам, возвращаемым из драгоценного камня linkedin, вы можете сделать:

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
2 голосов
/ 20 ноября 2011

Вы можете просто позвонить .to_hash, чтобы превратить Маш в Хэш (например, params).

Источник:

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

...