【发布时间】:2010-09-07 10:56:51
【问题描述】:
例子:
result = ActiveRecord::Base.connection.execute("select 'ABC'")
如何从result 获取'ABC' 值?尝试result.first 没有成功。谢谢
附言宝石:
活动记录 (2.3.9)
mysql (2.8.1)
【问题讨论】:
标签: mysql ruby-on-rails activerecord
例子:
result = ActiveRecord::Base.connection.execute("select 'ABC'")
如何从result 获取'ABC' 值?尝试result.first 没有成功。谢谢
附言宝石:
活动记录 (2.3.9)
mysql (2.8.1)
【问题讨论】:
标签: mysql ruby-on-rails activerecord
你可以在 cosole 上试试:
脚本/控制台#rails 2 rails 控制台 # rails 3在控制台输入你的代码,你会得到:
irb> result = ActiveRecord::Base.connection.execute("select 'ABC'") => [{0=>"ABC", "'ABC'"=>"ABC"}]所以你得到它与
result.first[0]
# or
result.first['ABC']
result.first 只返回第一行,而不是第一个值。此行由具有数字和命名访问权限的 Hash 组成。
【讨论】:
[{0=>"ABC", "'ABC'"=>"ABC"}],为什么有 2 个“ABC”?还有,0 和第一个"'ABC'" 是什么意思?其中之一是列名吗?当我在 MySQL 查询浏览器中进行查询时,列名是ABC,第一行的值是ABC。
#<Mysql::Result:0x102f5e0d0>,而不是[{0=>"ABC", "'ABC'"=>"ABC"}]。什么给了?
ActiveRecord::Base.connection.select_one("select 'ABC'") 并返回一些明智的...
您可以使用.select_all 而不是.execute,这将返回一个包含结果的数组。
所以使用:
ActiveRecord::Base.connection.select_all("select 'ABC'")
【讨论】:
试试:
result = ActiveRecord::Base.connection.select_value("select 'ABC'")
如果你不需要的话,我不建议你搞乱底层数据库代码。
【讨论】:
useful 为您服务 ;-)