Как показать результат sql на консоли сервера
В рельсах 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 ответа:
Есть несколько способов получить mysql "ответ" от вашего запроса. вы можете вызвать каждый, и он будет повторяться над каждой строкой (только одна строка - счетчик в вашем случае). взгляните на mysql gem docs, чтобы увидеть другие доступные методы, такие как each_hash и all_hash.
rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;") rslt.each {|mysql_result| puts mysql_result}
Вы можете просто использовать метод
to_a
для вашего результата, например:result = connection.execute(sql) result.to_a
Это вернет (и покажет, если в консоли), что вы ищете.
Это зависит от среды, которую вы используете в данный момент. Для разработки уровень регистратора по умолчанию - debug , для производства - info. Вы можете использовать его следующим образом:
class HomeController < ActionController::Base def index rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;") logger.info "#{rslt}" end end
Вы можете прочитать больше о Rails logging в блоге Майка Наберезного: http://mikenaberezny.com/2007/02/24/rails-logging-tips/