如何在服务器控制台上显示sql结果

时间:2011-11-11 15:44:22

标签: ruby-on-rails activerecord ruby-on-rails-2

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 个答案:

答案 0 :(得分:11)

有几种方法可以从查询中获取mysql“answer”。你可以调用每一行,它将迭代每一行(只有一行 - 在你的情况下计数)。查看mysql gem docs以查看其他可用方法,例如each_hash和all_hashes。

rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;")
rslt.each {|mysql_result| puts mysql_result}

答案 1 :(得分:7)

您可以在结果中使用to_a方法,如下所示:

result = connection.execute(sql)
result.to_a

这将返回(并在控制台中显示)您要查找的内容。

答案 2 :(得分:1)

这取决于您当前使用的环境。对于开发,默认记录器级别为 debug ,对于生产它的 info 级别。你可以这样使用它:

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

您可以在Mike Naberezny的博客上阅读有关rails日志记录的更多信息:http://mikenaberezny.com/2007/02/24/rails-logging-tips/