[英]Iterate through array to construct hash in Ruby
目前我有:
cache_hash = {}
array = [:id, :content, :title]
data_source = some_active_record_object
array.each{ |k| cache_hash[k] = data_source.send(k) }
cache_hash
#=>{:id=>"value1", :content=>"value2", :title=>"value3"}
我想知道是否有更好的方法遍历数组并散列出来。
编写如下:
cache_hash = Hash[array.map { |k| [k, data_source.send(k)] }]
或使用新的#to_h
cache_hash = array.map { |k| [k, data_source.send(k)] }.to_h
我不确定您是否要遵循此路线,但这是AR查询的替代方法:
Foo.select('id, content, title').to_a.map(&:serializable_hash)
Foo
是您正在操作的模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.