Pergunta

Estou construindo um aplicativo que se integra ao Highrise e So So-Far-Good, no entanto, ao tentar importar uma pessoa Highrise::People ele cospe um enorme hash semelhante a isso:

[ ...,  #<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={}>, ... ]

Parece isso bem dentro de cada Highrise::Person é um @attributes que é outro Highrise::Person::ContactData, que por si só é outro @attributes com matrizes como email_addresses[] e phone_numbers[] bem como chave/valores simples ...

Desculpe ser tão confuso, o que eu quero saber é como eu conseguiria first_name de cada pessoa de um hash como este?

Provavelmente super simples, estou apenas confuso ...

Atualizar

Eu acho que uma maneira melhor de frase seria, dado o hash acima, por que isso não funciona:

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

for person in @people do
   person.attributes["first_name"]
end
Foi útil?

Solução

Se sua lista é uma variedade de pessoas

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

Se Pessoa tem um att_reader, é isso.

Outras dicas

Você também pode fazer:

@people.each do |person|
    puts person.first_name
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top