我在ActiveRecord中使用了一個簡單的查詢,它執行類似這樣的操作。在Rails中,如何在執行ActiveRecord查詢時獲取實際查詢
MyTable.find(:all, :conditions => {:start_date => format_time(params[:date]) })
我想是在後臺執行,也許使用puts
聲明或類似的東西相當於查詢。 MySQL是我的數據庫。
我在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