gpt4 book ai didi

arrays - 如何将 ActiveRecord 结果转换为哈希数组

转载 作者:行者123 更新时间:2023-12-03 04:47:35 26 4
gpt4 key购买 nike

我有一个查找操作的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com