Как показать результат 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 5

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/