У меня есть результат операции поиска ActiveRecord:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Теперь я хочу преобразовать эти результаты в массив таких хэшей:
[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" }
так что я смогу выполнить итерацию по массиву и добавить больше элементов в хеши, а затем преобразовать результат в JSON
свой ответ API. Как я могу это сделать?
arrays
activerecord
hash
Авинаш Мб
источник
источник
Ответы:
as_json
Вы должны использовать
as_json
метод, который преобразует объекты ActiveRecord в Ruby Hashes, несмотря на его названиеserializable_hash
Вы также можете преобразовать любые объекты ActiveRecord в хэш с помощью,
serializable_hash
и вы можете преобразовать любые результаты ActiveRecord в массив с помощьюto_a
, поэтому для вашего примера:И если вам нужно уродливое решение для Rails до v2.3
источник
tasks_records = TaskStoreStatus.all.map(&:attributes)
..as_json
,&:serializable_hash
и&:attributes
? Это связано с помощниками ActiveRecord или напрямую с производительностью? заранее спасибо, ребята! @Dom @Rigo @Fredrik EМожет быть?
Если вам нужны символьные клавиши:
источник
Для получения текущей ActiveRecord (4.2.4+) существует метод
to_hash
наResult
объекте , который возвращает массив хешей. Затем вы можете сопоставить его и преобразовать в символизированные хэши:См. Документацию по ActiveRecord :: Result для получения дополнительной информации .
источник
to_hash
метод: попробуйтеto_ary
вместо этого. Как ни странно, у меня это сработало.