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

标签 arrays activerecord hash

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

相关文章:

c# - 无法从 "method group"转换为 "string"

java - 使用 Array-Java 实现队列

php - Yii - 回显最后一个查询

java - 为什么在HashMap中计算hashcode的索引

ruby-on-rails - 在大型关联上进行高效选择和区分

ruby-on-rails - Rails 事件记录 : foreign_key vs references

php - 什么是最安全的哈希方法? (PHP)

php - 将两个数组元素一一插入数据库表

c++ - 重载分辨率和数组 : which function should be called?

创建动态数组以容纳多个单词