Pregunta

Estoy creando una aplicación que se integra con Highrise, y hasta ahora tan buena, sin embargo, cuando intento importar una persona Highrise :: People escupe un hash enorme similar a esto:

[ ...,  #<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 que justo dentro de cada Highrise :: Person hay un @attributes que es otro Highrise :: Person :: ContactData , que es otro @attributes con matrices como email_addresses [] y phone_numbers [] , así como claves / valores simples ...

Lamento ser tan confuso, lo que quiero saber es ¿cómo podría obtener el first_name de cada persona de un hash como este?

Probablemente súper simple, estoy confundido ...

Update

Creo que una mejor manera de expresarlo sería, dado el hash anterior, ¿por qué no funciona esto?

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

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

Solución

Si tu lista es un conjunto de personas

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

Si Persona tiene un attr_reader, es decir.

Otros consejos

También puedes hacer:

@people.each do |person|
    puts person.first_name
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top