Tengo un resultado de ActiveRecord de una operación de búsqueda:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Ahora quiero convertir estos resultados en una matriz de hashes como este:
[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" }
para poder iterar a través de la matriz y agregar más elementos a los hash y luego convertir el resultado en JSONmi respuesta API. ¿Cómo puedo hacer esto?
arrays
activerecord
hash
Avinash Mb
fuente
fuente

Respuestas:
as_json
Debe usar el
as_jsonmétodo que convierte los objetos ActiveRecord a Ruby Hashes a pesar de su nombreserializable_hash
También puede convertir cualquier objeto ActiveRecord en un Hash con
serializable_hashy puede convertir cualquier resultado de ActiveRecord en un Array conto_a, por lo que para su ejemplo:Y si quieres una solución fea para Rails antes de la v2.3
fuente
tasks_records = TaskStoreStatus.all.map(&:attributes)..as_json,&:serializable_hashy&:attributes? ¿Tiene que ver con los ayudantes de ActiveRecord o directamente con el rendimiento? gracias de antemano chicos! @Dom @Rigo @Fredrik E¿Tal vez?
Si necesita claves de símbolos:
fuente
Para ActiveRecord actual (4.2.4+), hay un método
to_hashen elResultobjeto que devuelve una matriz de hashes. Luego puede mapearlo y convertirlo en hashes simbolizados:Consulte los documentos de ActiveRecord :: Result para obtener más información .
fuente
to_hashmétodo: intente en suto_arylugar. Curiosamente esto funcionó para mí.