2009-11-28 10 views
0

Je construis une application qui s'intègre avec Highrise, et si loin, si bien, en essayant d'importer une personne Highrise::People il crache un énorme hachage semblable à ceci:Rails, trouver des objets dans les hachages complexes

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

Il ressemble à ce droit à l'intérieur de chaque Highrise::Person est un @attributes qui est un autre Highrise::Person::ContactData, qui est lui-même une autre @attributes avec des tableaux comme email_addresses[] et phone_numbers[] ainsi que de simples clés/valeurs ...

Désolé pour être si déroutant, ce que je veux savoir est-ce que je devrais juste obtenir le first_name de chaque personne d'un hachage comme ceci?

Probablement super simple je suis juste confus ...

Mise à jour

Je suppose une meilleure façon de l'exprimer serait, étant donné le hachage ci-dessus, pourquoi pas ce travail:

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

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

Répondre

1

Si yourlist est un tableau de personnes

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

Si La personne a un attr_reader, c'est-à-dire.

0

Vous pouvez également faire:

@people.each do |person| 
    puts person.first_name 
end