如何在ActiveRecord中访问Mysql::Result?

如何在ActiveRecord中访问Mysql::Result?,mysql,ruby-on-rails,activerecord,Mysql,Ruby On Rails,Activerecord,例如: result = ActiveRecord::Base.connection.execute("select 'ABC'") 如何从结果中获取“ABC”值?尝试过的结果。第一次没有成功。谢谢 p、 美国宝石: activerecord 2.3.9 mysql 2.8.1 尝试: 如果不需要的话,我不建议您乱搞底层数据库代码。您可以在cosole上试试: script/console # rails 2 rails console # rails 3 result.first只返回第一

例如:

result = ActiveRecord::Base.connection.execute("select 'ABC'")
如何从结果中获取“ABC”值?尝试过的结果。第一次没有成功。谢谢

p、 美国宝石:

activerecord 2.3.9 mysql 2.8.1

尝试:


如果不需要的话,我不建议您乱搞底层数据库代码。

您可以在cosole上试试:

script/console # rails 2 rails console # rails 3 result.first只返回第一行,而不是第一个值。此行由一个具有数字和命名访问权限的哈希组成。

而不是。执行您可以使用的。全选,这将返回一个包含结果的数组

因此,请使用:

ActiveRecord::Base.connection.select_all("select 'ABC'")

谢谢jigfox。对于结果[{0=>ABC,'ABC'=>ABC}],为什么有两个ABC?那么,0和第一个“ABC”是什么意思?其中一个是列名吗?当我在MySQL查询浏览器中进行查询时,列名是ABC,第一行的值是ABC。结果是而不是[{0=>ABC,'ABC'=>ABC}]。给出了什么?为什么有两个ABC?那么,0和第一个“ABC”是什么意思?一个可以通过列编号1访问,另一个可以通过列名称ABC访问。至于mysql结果:这不重要,您应该仍然可以像在哈希数组中一样访问您的值。@ohho-遇到了相同的问题/问题。我们使用的是旧版本的Ruby/Rails和MySQL。在脚本/控制台中,将其更改为ActiveRecord::Base.connection.select\u oneselect'ABC',并获得了一些合理的信息…非常感谢。我把答案归功于jigfox,因为我正在从MySQL查询中寻找一般的返回结构,而不限于一个值。对你有用的信用-有了500k+记录,你真的无法全选,因为速度太快了。这也是人们倾向于使用connection.execute以便优化正在处理的SQL的原因。这将返回ActiveRecord::Result。 irb> result = ActiveRecord::Base.connection.execute("select 'ABC'") => [{0=>"ABC", "'ABC'"=>"ABC"}]
result.first[0]
# or
result.first['ABC']
ActiveRecord::Base.connection.select_all("select 'ABC'")