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)
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.
[{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.#<Mysql::Result:0x102f5e0d0> instead of [{0=>"ABC", "'ABC'"=>"ABC"}]. What gives?ActiveRecord::Base.connection.select_one("select 'ABC'") and got back something sensible...Instead of .execute you could use .select_all, this will return an array with the result.
So use:
ActiveRecord::Base.connection.select_all("select 'ABC'")
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.
useful credit for you ;-)