Schienen, Objekte in komplexen Hashes finden
-
06-07-2019 - |
Frage
Ich baue eine App auf, die sich in Highlise und So-Far-So-Good integriert, wenn ich versuche, eine Person zu importieren Highrise::People
Es spuckt einen riesigen Hash aus, der dem ähnelt:
[ ..., #<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={}>, ... ]
Es sieht so direkt in jedem aus Highrise::Person
ist ein @attributes
Welches ist ein anderer Highrise::Person::ContactData
, was selbst ein anderer ist @attributes
mit Arrays mögen email_addresses[]
und phone_numbers[]
sowie einfache Schlüssel/Werte ...
Es tut mir leid, so verwirrend zu sein, was ich wissen möchte ist, wie ich das nur bekommen würde first_name
von jeder Person aus einem Hash wie diesem?
Wahrscheinlich super einfach, ich bin nur verwirrt ...
Aktualisieren
Ich denke, ein besserer Weg, um dies zu formulieren, warum wird diese Arbeit angesichts des oben genannten Hashs nicht sein:
@people = Highrise::Person.find(:all)
for person in @people do
person.attributes["first_name"]
end
Lösung
Wenn deine Liste ist eine Reihe von Personen
yourlist.each do |person|
puts person.attributes["first_name"]
end
Wenn Person hat einen attr_reader, das heißt.
Andere Tipps
Sie können es auch tun:
@people.each do |person|
puts person.first_name
end