我有一个查找操作的 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 响应。我怎样才能做到这一点?
最佳答案
as_json
您应该使用 as_json
方法将 ActiveRecord 对象转换为 Ruby 哈希,尽管其名称如此
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
可序列化哈希
您还可以使用 serialized_hash
将任何 ActiveRecord 对象转换为哈希,并且可以使用 to_a
将任何 ActiveRecord 结果转换为数组,因此对于您的示例:
tasks_records = TaskStoreStatus.all
tasks_records.to_a.map(&:serializable_hash)
如果您想要在 v2.3 之前为 Rails 提供一个丑陋的解决方案
JSON.parse(tasks_records.to_json) # please don't do it
关于arrays - 如何将 ActiveRecord 结果转换为哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427936/