8

Rails v2.3Ruby 1.8中,如果我在模型类中使用以下代码运行sql 语句:

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

如何在服务器控制台中显示查询结果?

我试过 :

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

但它只在服务器控制台上返回“MySQL 结果对象”,而不是确切的结果。

4

3 回答 3

13

有几种方法可以从您的查询中获取 mysql“答案”。您可以调用 each ,它将遍历每一行(仅一行 - 在您的情况下计数)。查看mysql gem 文档以查看其他可用方法,例如 each_hash 和 all_hashes。

rslt = ActiveRecord::Base.connection.execute("select count(*) from cars;")
rslt.each {|mysql_result| puts mysql_result}
于 2011-11-11T16:06:33.900 回答
7

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

result = connection.execute(sql)
result.to_a

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

于 2012-06-26T19:31:11.197 回答
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/

于 2011-11-11T15:59:37.477 回答