使用符号而不是字符串作为键,返回Ruby Mysql2的结果哈希表

4

我正在使用Ruby的Mysql2 Gem,将结果转换为哈希表:

sql = "SELECT * FROM ... WHERE ... "

results = ActiveRecord::Base.connection.execute(sql)

results.each(:as => :hash) do |row|
  finalresults << row
end

但是这返回的哈希表使用字符串作为键。我想要哈希表使用符号作为键,因为通常来说符号更有效率。有人知道如何以一种高效的方式实现这个目标,而不需要在结果返回后循环遍历键吗?请注意,我的某些查询可能会产生大量的数据。

因此,不是

{'id'=>19201, 'name'=>'Foo', 'age'=>30}

I want,

{:id=>19201, :name=>'Foo', :age=>30}

感谢你的提前帮助。
2个回答

3
你可以使用 Hash#with_indifferent_access。虽然我不确定是否有一种方法可以自动地访问 results,但很可能是在幕后实现的,因此没有性能损失。
results.each(:as => :hash) do |row|
  finalresults << row.with_indifferent_access
end

3

使用“symbolize_keys”标志可能会获得更好的性能。以下是文档中的示例:

client.query("SELECT * FROM users WHERE group='githubbers'", :symbolize_keys => true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接