Ich habe ein ActiveRecord-Ergebnis einer Suchoperation:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Jetzt möchte ich diese Ergebnisse in eine Reihe von Hashes wie diesen konvertieren:
[0] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" }
[1] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" }
[2] -> { :task_d => 10, :store_name=> "Koramanagala", :store_region=> "India" }
Damit kann ich das Array durchlaufen und weitere Elemente zu Hashes hinzufügen und später das Ergebnis JSON
für meine API-Antwort konvertieren . Wie kann ich das machen?
arrays
activerecord
hash
Avinash Mb
quelle
quelle
Antworten:
as_json
Sie sollten eine
as_json
Methode verwenden, die ActiveRecord-Objekte trotz ihres Namens in Ruby Hashes konvertiertserializable_hash
Sie können auch alle ActiveRecord-Objekte in einen Hash mit
serializable_hash
konvertieren und alle ActiveRecord-Ergebnisse in ein Array mit konvertieren.to_a
Beispiel:Und wenn Sie eine hässliche Lösung für Rails vor v2.3 wollen
quelle
tasks_records = TaskStoreStatus.all.map(&:attributes)
..as_json
,&:serializable_hash
und&:attributes
? Hat es mit ActiveRecord-Helfern oder direkt mit der Leistung zu tun? Danke im Voraus Jungs! @Dom @Rigo @Fredrik EVielleicht?
Wenn Sie Symboltasten benötigen:
quelle
Für den aktuellen ActiveRecord (4.2.4+) gibt es eine Methode
to_hash
für dasResult
Objekt, die ein Array von Hashes zurückgibt. Sie können es dann zuordnen und in symbolisierte Hashes konvertieren:Weitere Informationen finden Sie in den ActiveRecord :: Result-Dokumenten .
quelle
to_hash
Methode nicht erkennt : Versuchen Sie esto_ary
stattdessen. Seltsamerweise hat das bei mir funktioniert.