views:

49

answers:

2

Example:

  result = ActiveRecord::Base.connection.execute("select 'ABC'")

How can I get the 'ABC' value from result? Tried result.first without success. Thanks

p.s. Gems:

activerecord (2.3.9)
mysql (2.8.1)
+2  A: 

Try:

result = ActiveRecord::Base.connection.select_value("select 'ABC'")

I wouldn't advise messing around with the underlying database code if you don't need to.

Shadwell
Thanks Shadwell. I give the answer credit to jigfox as I am looking for the general return structure from a MySQL query, not limited to a value. A `useful` credit for you ;-)
ohho
+2  A: 

You could try it on the cosole:

script/console # rails 2
rails console  # rails 3

enter your code in the console and you get:

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

so it you get it with

result.first[0]
# or
result.first['ABC']

result.first just returns the first row, not the first value. This row consists of a Hash with numerical and named access.

jigfox
Thanks jigfox. For the result `[{0=>"ABC", "'ABC'"=>"ABC"}]`, why there is 2 "ABC"s? and, what is the meaning of `0` and first `"'ABC'"`? Is one of them a column name? As when I do the query in MySQL Query Browser, the column name is `ABC` and the value is first row is `ABC`.
ohho
result is `#<Mysql::Result:0x102f5e0d0>` instead of `[{0=>"ABC", "'ABC'"=>"ABC"}]`. What gives?
ohho
*"why there is 2 "ABC"s? and, what is the meaning of 0 and first "'ABC'"?"* One is accessible by the Column number "1" and one is accessible by the column name "ABC".
jigfox
as to your mysql result: it shouldn't matter, you should still be able to access you values like in a array of hashs.
jigfox