在Rails中,如何在执行ActiveRecord查询时获取实际查询
问题描述:
我在ActiveRecord中使用了一个简单的查询,它执行类似这样的操作。在Rails中,如何在执行ActiveRecord查询时获取实际查询
MyTable.find(:all, :conditions => {:start_date => format_time(params[:date]) })
我想是在后台执行,也许使用puts
声明或类似的东西相当于查询。 MySQL是我的数据库。
答
您可以通过查看位于log/development.log
的开发日志查看执行的SQL查询。请注意,默认情况下,script/server
命令尾随此日志文件。
在Rails 3中,您可以将
.to_sql
方法调用附加到finder的末尾以输出SQL。或者,New Relic免费的RPM Lite gem可让您以开发人员模式查看SQL查询以及大量其他有用的性能调整信息。
答
在开发模式下,您的数据库查询将打印到服务器控制台,您可以在其中本地化查询。
答
可以insatll 杂种
它可以让你的所有SQL查询你的终端上
或运行的活动记录查询在脚本/控制台
答
您正在寻找construct_finder_sql
。
>> User.send(:construct_finder_sql, {:conditions => { :username => 'joe' }}) => "SELECT * FROM \"users\" WHERE (\"users\".\"username\" = E'joe') " >> User.scoped(:joins => :orders, :conditions => { :username => 'joe' }).send(:construct_finder_sql, {}) => "SELECT \"users\".* FROM \"users\" INNER JOIN \"orders\" ON orders.user_id = users.id WHERE (\"users\".\"username\" = E'joe') "
但它如此拥挤在日志文件中。无论如何分开它。 – bragboy 2010-07-16 11:04:35