如何将ActiveRecord结果转换为散列数组 [英] How to convert ActiveRecord results into an array of hashes

查看:195
本文介绍了如何将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 => 印度} 

[1] - > {:task_d => 10,:store_name => Koramanagala,:store_region => 印度}

[2] - > {:task_d => 10,:store_name => Koramanagala,:store_region => India}

这样我就可以迭代数组并添加更多元素散列并稍后将结果转换为我的API响应的 JSON 。我应该怎么做? as_json 方法将ActiveRecord对象转换为Ruby Hashes,尽管它的名称为

  tasks_records = TaskStoreStatus.all 
tasks_records = tasks_records.as_json

#您现在可以通过调用`to_json`来添加新记录并返回结果为json

tasks_records< < TaskStoreStatus.last.as_json
tasks_records<< {:task_id => 10,:store_name => Koramanagala,:store_region => India}
tasks_records.to_json



serializable_hash



你也可以使用 serializable_hash 将任何ActiveRecord对象转换为Hash,并且可以将任何ActiveRecord结果转换为具有 to_a ,例如:

  tasks_records = TaskStoreStatus.all 
tasks_records.to_a.map (& amp;:serializable_hash)

如果你想在v2.3之前使用Rails的丑陋解决方案

  JSON.parse(tasks_records.to_json)#请不要这样做


I have an ActiveRecord result of a find operation:

tasks_records = TaskStoreStatus.find(
  :all,
  :select => "task_id, store_name, store_region",
  :conditions => ["task_status = ? and store_id = ?", "f", store_id]
)

Now I want to convert this results into an array of hashes like this:

[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" }

so that I will be able to iterate through the array and to add more elements to hashes and later to convert the result into JSON for my API response. How can I do this?

解决方案

as_json

You should use as_json method wich convert ActiveRecord objects to Ruby Hashes despite its name

tasks_records = TaskStoreStatus.all
tasks_records = tasks_records.as_json

# You can now add new records and return the result as json by calling `to_json`

tasks_records << TaskStoreStatus.last.as_json
tasks_records << { :task_id => 10, :store_name => "Koramanagala", :store_region => "India" }
tasks_records.to_json

serializable_hash

You can also convert any ActiveRecord objects to a Hash with serializable_hash and you can convert any ActiveRecord results to an Array with to_a, so for your example :

tasks_records = TaskStoreStatus.all
tasks_records.to_a.map(&:serializable_hash)

And if you want an ugly solution for Rails prior to v2.3

JSON.parse(tasks_records.to_json) # please don't do it

这篇关于如何将ActiveRecord结果转换为散列数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆