Rails, Trouver des objets dans des hachages complexes
-
06-07-2019 - |
Question
Je construis une application qui s'intègre à Highrise et qui est tellement bonne, cependant, lorsque vous essayez d'importer une personne Highrise :: Personnes
, il génère un énorme hash semblable à ceci:
[ ..., #<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={}>, ... ]
On dirait que, à l'intérieur de chaque Highrise :: Person
, il y a un @attributes
qui est un autre Highrise :: Person :: ContactData ??code> , qui est lui-même un autre
@attributes
avec des tableaux comme adresses_email []
et numéros de téléphone []
ainsi que des clés / valeurs simples ...
Désolé d'être si déroutant, ce que je veux savoir, c'est comment puis-je obtenir le prénom
de chaque personne à partir d'un hachage comme celui-ci?
Probablement super simple, je suis un peu confus ...
Mettre à jour
Je suppose qu'une meilleure façon de l'exprimer serait, étant donné le hachage ci-dessus, pourquoi cela ne fonctionnerait-il pas:
@people = Highrise::Person.find(:all)
for person in @people do
person.attributes["first_name"]
end
La solution
Si votre liste est un tableau de personnes
yourlist.each do |person|
puts person.attributes["first_name"]
end
Si Personne a un lecteur attr_lead, c'est-à-dire.
Autres conseils
Vous pouvez également faire:
@people.each do |person|
puts person.first_name
end