Saya memiliki hasil ActiveRecord dari operasi pencarian:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Sekarang saya ingin mengonversi hasil ini menjadi array hash seperti ini:
[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" }
sehingga saya akan dapat mengulang melalui array dan menambahkan lebih banyak elemen ke hash dan kemudian mengubah hasilnya menjadi JSON
untuk respons API saya. Bagaimana saya bisa melakukan ini?
arrays
activerecord
hash
Avinash Mb
sumber
sumber
Jawaban:
as_json
Anda harus menggunakan
as_json
metode yang mengubah objek ActiveRecord menjadi Ruby Hashes meskipun namanyaserializable_hash
Anda juga dapat mengonversi objek ActiveRecord apa pun menjadi Hash dengan
serializable_hash
dan Anda dapat mengonversi hasil ActiveRecord apa pun menjadi Array denganto_a
, jadi sebagai contoh:Dan jika Anda menginginkan solusi jelek untuk Rails sebelum v2.3
sumber
tasks_records = TaskStoreStatus.all.map(&:attributes)
..as_json
,&:serializable_hash
dan&:attributes
? Apakah ini ada hubungannya dengan pembantu ActiveRecord atau langsung dengan kinerja? terima kasih sebelumnya guys! @Dom @Rigo @Fredrik EMungkin?
Jika Anda membutuhkan tombol simbol:
sumber
Untuk ActiveRecord saat ini (4.2.4+), ada metode
to_hash
padaResult
objek yang mengembalikan array hashes. Anda kemudian dapat memetakannya dan mengubahnya menjadi hash yang disimbolkan:Lihat dokumen ActiveRecord :: Result untuk info lebih lanjut .
sumber
to_hash
metode: cobato_ary
saja. Anehnya ini berhasil untuk saya.