1. ホーム
  2. sql

[解決済み] Ruby on RailsでActiveRecordのクエリで生成されるSQLを見るにはどうしたらいいですか?

2022-07-20 12:01:57

質問

ある ActiveRecord Query が生成する SQL 文を確認したいのです。 クエリ発行後にログからこの情報を取得できることは承知していますが、ActiveRecordクエリに対して呼び出すことのできるメソッドがあるのでしょうか?

例えば

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

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

どのように解決するのですか?

私が最後にこれを行おうとしたとき、これを行うための公式の方法はありませんでした。そこで、私は find とその仲間たちがクエリを直接生成するために使っている関数を使うことにしました。これはプライベートAPIなので、Rails 3で完全に壊れてしまうという大きなリスクがありますが、デバッグ用としては問題ない解決策です。

このメソッドは construct_finder_sql(options) ( lib/active_record/base.rb:1681 ) を使用する必要があります。 send はプライベートなものだからです。

編集 : construct_finder_sql は Rails 5.1.0.beta1 で削除されました。 .