Как получить доступ к Mysql:: Результат в ActiveRecord?
Пример:
result = ActiveRecord::Base.connection.execute("select 'ABC'")
Как я могу получить значение 'ABC'
от result
? Пробовал result.first
без успеха. Благодаря
p.s. Драгоценные камни:
activerecord (2.3.9)
mysql (2.8.1)
Ответы
Ответ 1
Вы можете попробовать его на козоле:
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']
result.first
просто возвращает первую строку, а не первое значение. Эта строка состоит из хэша с числовым и именованным доступом.
Ответ 2
Вместо .execute
вы можете использовать .select_all
, это вернет массив с результатом.
Поэтому используйте:
ActiveRecord::Base.connection.select_all("select 'ABC'")
Ответ 3
Try:
result = ActiveRecord::Base.connection.select_value("select 'ABC'")
Я бы не советовал возиться с базовым кодом базы данных, если вам не нужно.
Ответ 4
У меня есть таблица с некоторыми данными, где есть столбец с именем Статус, который содержит такие значения, как closed
, in progress
и т.д.
Итак, когда я делаю код как:
ActiveRecord::Base.connection.select_all "select DISTINCT Status from tickets"
Я получаю следующее:
StatusclosedStatusin progressStatusassignedStatusnewStatussolved
Проблема заключается в том, что имя столбца добавляется перед каждым значением. Как получить значения в одиночку?