使用Ruby将SQL结果转换为带有ID键的哈希

odi*_*apc 3 ruby

我有以下数组(SQL结果):

[
  {:id => 1, :field1 => "one", :field2 => "two"},
  {:id => 2, :field1 => "one", :field2 => "two"},
  ...
]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{
  1 => {:field1 => "one", :field2 => "two"},
  2 => {:field1 => "one", :field2 => "two"},
  ...
}
Run Code Online (Sandbox Code Playgroud)

现在我喜欢以下内容:

data = {}
result.each do |row|
  data[row[:id]] = {:field1 => row[:field1], :field2 => row[:field2]}
end
Run Code Online (Sandbox Code Playgroud)

我绝对相信这是错误的方式.使用Ruby的最佳方法是什么?是否有任何地图或其他类型的片段?

hs-*_*hs- 6

Hash[arr.map { |h| [h.delete(:id), h] }]
Run Code Online (Sandbox Code Playgroud)