Avi*_* Mb 102 arrays hash activerecord
我有一个查找操作的ActiveRecord结果:
tasks_records = TaskStoreStatus.find(
:all,
:select => "task_id, store_name, store_region",
:conditions => ["task_status = ? and store_id = ?", "f", store_id]
)
Run Code Online (Sandbox Code Playgroud)
现在我想将此结果转换为像这样的哈希数组:
[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" }
Run Code Online (Sandbox Code Playgroud)
这样我就可以遍历数组并向哈希添加更多元素,然后将结果转换JSON为我的API响应.我怎样才能做到这一点?
hdo*_*rio 189
您应该使用as_json将ActiveRecord对象转换为Ruby Hashes的方法,尽管它的名称
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
Run Code Online (Sandbox Code Playgroud)
您还可以将任何ActiveRecord对象转换为Hash with,serializable_hash并且您可以将任何ActiveRecord结果转换为数组to_a,因此对于您的示例:
tasks_records = TaskStoreStatus.all
tasks_records.to_a.map(&:serializable_hash)
Run Code Online (Sandbox Code Playgroud)
如果你想在v2.3之前为Rails提供一个丑陋的解决方案
JSON.parse(tasks_records.to_json) # please don't do it
Run Code Online (Sandbox Code Playgroud)
Ele*_*yan 27
也许?
result.map(&:attributes)
Run Code Online (Sandbox Code Playgroud)
如果您需要符号键:
result.map { |r| r.attributes.symbolize_keys }
Run Code Online (Sandbox Code Playgroud)
对于当前的ActiveRecord(4.2.4+)to_hash,Result对象上有一个返回哈希数组的方法。然后,您可以在其上映射并转换为符号哈希:
# Get an array of hashes representing the result (column => value):
result.to_hash
# => [{"id" => 1, "title" => "title_1", "body" => "body_1"},
{"id" => 2, "title" => "title_2", "body" => "body_2"},
...
]
result.to_hash.map(&:symbolize_keys)
# => [{:id => 1, :title => "title_1", :body => "body_1"},
{:id => 2, :title => "title_2", :body => "body_2"},
...
]
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参见ActiveRecord :: Result文档。
| 归档时间: |
|
| 查看次数: |
94083 次 |
| 最近记录: |