Ruby on Railsで特定のActiveRecordクエリによって生成されるSQLを確認するにはどうすればいいですか?質問する

Ruby on Railsで特定のActiveRecordクエリによって生成されるSQLを確認するにはどうすればいいですか?質問する

特定の ActiveRecord クエリが生成する SQL ステートメントを確認したいと思います。クエリが発行された後にログからこの情報を取得できることはわかっていますが、ActiveRecord クエリで呼び出すことができるメソッドがあるかどうか疑問に思っています。

例えば:

SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`")

irb コンソールを開いて、このクエリが生成する SQL を表示するメソッドを最後に追加しますが、必ずしもクエリを実行するわけではありません。

ベストアンサー1

penger と似ていますが、クラスがロードされ、ロガーがキャッシュされた後でも、コンソールでいつでも動作します。

Rails 2の場合:

ActiveRecord::Base.connection.instance_variable_set :@logger, Logger.new(STDOUT)

Rails 3.0.xの場合:

ActiveRecord::Base.logger = Logger.new(STDOUT)

Rails >= 3.1.0では、コンソールではすでにデフォルトで実行されています。ノイズが多すぎる場合は、消してできるよ:

ActiveRecord::Base.logger = nil

おすすめ記事