Domanda

Sto costruendo un'app che si integra con Highrise, e finora così buona, quando provo a importare una persona Highrise :: People sputa un enorme hash simile a in questo modo:

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

Sembra che proprio all'interno di ogni Highrise :: Person sia presente un @attributes che è un altro Highrise :: Person :: ContactData , che a sua volta è un altro @attributes con array come email_addresses [] e phone_numbers [] nonché semplici chiavi / valori ...

Mi dispiace essere così confuso, quello che voglio sapere è come potrei ottenere il first_name di ogni persona da un hash come questo?

Probabilmente super semplice, sono solo confuso ...

Aggiorna

Immagino che un modo migliore per esprimerlo sarebbe, dato l'hash sopra, perché non funziona:

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

for person in @people do
   person.attributes["first_name"]
end
È stato utile?

Soluzione

Se la tua lista è una matrice di persone

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

Se Persona ha un attr_reader, cioè.

Altri suggerimenti

Puoi anche fare:

@people.each do |person|
    puts person.first_name
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top