Rails, поиск объектов в сложных хешах - PullRequest
0 голосов
/ 28 ноября 2009

Я создаю приложение, которое интегрируется с Highrise, и, тем не менее, при попытке импортировать человека Highrise::People оно выдает огромный хэш, подобный следующему:

[ ...,  #<Highrise::Person:0x1035084b8 @attributes={"contact_data"=>#<Highrise::Person::ContactData:0x1034f8b30 @attributes={"email_addresses"=>[], "addresses"=>[], "web_addresses"=>[], "phone_numbers"=>[], "twitter_accounts"=>[], "instant_messengers"=>[]}, @prefix_options={}>, "created_at"=>Sat Nov 28 05:38:26 UTC 2009, "title"=>"president", "updated_at"=>Sat Nov 28 05:38:27 UTC 2009, "background"=>"asdfasdfadsfas", "id"=>27569370, "owner_id"=>nil, "group_id"=>nil, "company_id"=>27569371, "last_name"=>"Doe", "author_id"=>192208, "visible_to"=>"Everyone", "first_name"=>"John"}, @prefix_options={}>, ... ]

Похоже, что прямо внутри каждого Highrise::Person находится @attributes, который является другим Highrise::Person::ContactData, который сам по себе является другим @attributes с массивами, такими как email_addresses[] и phone_numbers[], а также простым ключом / значениями ...

Извините, что так запутался, я хочу знать, как бы я мог получить first_name каждого человека из такого хеша?

Наверное, супер просто, я просто запутался ...

Обновление

Я думаю, что лучший способ выразить это, учитывая хэш, приведенный выше, почему это не сработает:

@people = Highrise::Person.find(:all)

for person in @people do
   person.attributes["first_name"]
end

Ответы [ 2 ]

1 голос
/ 28 ноября 2009

Если ваш список это массив персон

yourlist.each do |person|
    puts person.attributes["first_name"]
end

Если Person имеет attr_reader, то есть.

0 голосов
/ 16 августа 2012

Вы также можете сделать:

@people.each do |person|
    puts person.first_name
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...