如何将ActiveRecord结果转换为散列数组 [英] How to convert ActiveRecord results into an array of hashes
问题描述
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屋!