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

ohh*_*hho 22 mysql activerecord ruby-on-rails

例:

result = ActiveRecord::Base.connection.execute("select 'ABC'")
Run Code Online (Sandbox Code Playgroud)

我怎样才能从中获得'ABC'价值result?尝试result.first没有成功.谢谢

ps宝石:

activerecord(2.3.9)
mysql(2.8.1)

jig*_*fox 26

你可以试试cosole:

script/console # rails 2
rails console  # rails 3

在控制台中输入您的代码,您将获得:

irb> result = ActiveRecord::Base.connection.execute("select 'ABC'")
 => [{0=>"ABC", "'ABC'"=>"ABC"}] 

所以你得到它

result.first[0]
# or
result.first['ABC']
Run Code Online (Sandbox Code Playgroud)

result.first只返回第一行,而不是第一行.此行包含具有数字和命名访问权限的哈希.

  • 结果是`#<Mysql :: Result:0x102f5e0d0>`而不是`[{0 =>"ABC","'ABC'"=>"ABC"}]`.是什么赋予了? (2认同)

Sha*_*ell 21

尝试:

result = ActiveRecord::Base.connection.select_value("select 'ABC'")
Run Code Online (Sandbox Code Playgroud)

如果你不需要,我不建议搞乱底层的数据库代码.


Syt*_*dij 21

而不是.execute你可以使用.select_all,这将返回一个带有结果的数组.

所以使用:

ActiveRecord::Base.connection.select_all("select 'ABC'")
Run Code Online (Sandbox Code Playgroud)