Как показать результат sql на консоли сервера - PullRequest
5 голосов
/ 11 ноября 2011

In Rails v2.3 , Ruby 1.8 , если я запускаю оператор sql со следующим кодом в моем классе модели:

ActiveRecord::Base.connection.execute("select count(*) from cars;")

Как показать результат запроса в консоли сервера?

Я пытался:

rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;")
p rslt

но он возвращает мне только «объект результата MySQL» на консоли сервера, а не точный результат.

Ответы [ 3 ]

11 голосов
/ 11 ноября 2011

Есть несколько способов получить mysql "ответ" на ваш запрос. Вы можете вызывать каждый из них, и он будет перебирать каждую строку (только одна строка - в вашем случае считается). взгляните на mysql gem docs , чтобы увидеть другие доступные методы, такие как each_hash и all_hashes.

rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;")
rslt.each {|mysql_result| puts mysql_result}
7 голосов
/ 26 июня 2012

Вы можете просто использовать метод to_a для вашего результата, например, так:

result = connection.execute(sql)
result.to_a

Это вернет (и покажет, если в консоли), что вы ищете.

1 голос
/ 11 ноября 2011

Это зависит от среды, которую вы используете в настоящее время.Для разработки уровень логгера по умолчанию - debug , для производства - info level.Вы можете использовать его следующим образом:

class HomeController < ActionController::Base
  def index
    rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;")
    logger.info "#{rslt}"
  end
end

Подробнее о регистрации рельсов можно прочитать в блоге Майка Наберезного: http://mikenaberezny.com/2007/02/24/rails-logging-tips/

...