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 JSON
mi respuesta API. ¿Cómo puedo hacer esto?
arrays
activerecord
hash
Avinash Mb
fuente
fuente
Respuestas:
as_json
Debe usar el
as_json
mé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_hash
y 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_hash
y&: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_hash
en elResult
objeto 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_hash
método: intente en suto_ary
lugar. Curiosamente esto funcionó para mí.