J'ai un résultat ActiveRecord d'une opération de recherche:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Maintenant, je veux convertir ces résultats en un tableau de hachages comme celui-ci:
[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" }
afin que je puisse parcourir le tableau et ajouter plus d'éléments aux hachages et plus tard convertir le résultat en JSON
pour ma réponse API. Comment puis-je faire ceci?
arrays
activerecord
hash
Avinash Mb
la source
la source
Réponses:
as_json
Vous devez utiliser une
as_json
méthode qui convertit les objets ActiveRecord en Ruby Hashes malgré son nomserializable_hash
Vous pouvez également convertir tous les objets ActiveRecord en un hachage avec
serializable_hash
et vous pouvez convertir tous les résultats ActiveRecord en un tableau avecto_a
, donc pour votre exemple:Et si vous voulez une solution moche pour Rails avant la v2.3
la source
tasks_records = TaskStoreStatus.all.map(&:attributes)
..as_json
,&:serializable_hash
et&:attributes
? Est-ce que cela a à voir avec les assistants ActiveRecord ou directement avec les performances? merci d'avance les gars! @Dom @Rigo @Fredrik EPeut être?
Si vous avez besoin de touches de symboles:
la source
Pour ActiveRecord actuel (4.2.4+), il existe une méthode
to_hash
sur l'Result
objet qui renvoie un tableau de hachages. Vous pouvez ensuite mapper dessus et convertir en hachages symbolisés:Consultez la documentation ActiveRecord :: Result pour plus d'informations .
la source
to_hash
méthode: essayez à lato_ary
place. Étrangement, cela a fonctionné pour moi.