在 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结果对象”,而不是确切的结果。
答案 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/