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

时间:2014-05-02 22:56:13

标签: ruby hashmap mysql2

我正在使用带有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}

我想,

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

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以使用Hash#with_indifferent_access。虽然我不确定是否有办法results无条件地自动访问,但很可能这是在引擎盖下实现的方式,因此没有性能损失。

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

答案 1 :(得分:1)

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

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