我有一个查找操作的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响应。我怎样才能做到这一点? 问题来源于stack overflow
as_json 您应该使用as_json将ActiveRecord对象转换为Ruby Hashes的方法,尽管其名称为
tasks_records = TaskStoreStatus.all tasks_records = tasks_records.as_json
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 您还可以使用将任何ActiveRecord对象转换为Hash,serializable_hash并且可以将任何ActiveRecord结果转换为Array to_a,因此对于您的示例:
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。