我在ActiveRecord中使用一个简单的查询,它执行类似的操作。
MyTable.find(:all, :conditions => {:start_date => format_time(params[:date]) })
我想获得在后台执行的等效查询,可能使用puts
语句或类似的语句。 MySQL是我的数据库。
答案 0 :(得分:7)
您可以通过查看log/development.log
中的开发日志来查看执行的SQL查询。请注意,默认情况下script/server
命令会对此日志文件进行尾随。
在Rails 3中,您可以将.to_sql
方法调用附加到查找程序的末尾以输出SQL。
或者,New Relic的免费RPM Lite gem可让您在开发人员模式下查看SQL查询以及许多其他有用的性能调整信息。
答案 1 :(得分:1)
您可以安装 mongrel
它可以在终端上获取所有SQL查询
或在脚本/控制台
上运行有效记录查询答案 2 :(得分:0)
在开发模式下,您的数据库查询将打印到服务器控制台,您可以在那里本地化查询。
答案 3 :(得分:0)
您正在寻找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') "