[解決済み] 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 で削除されました。
.
関連
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み] クエリビルダーのSQLクエリを文字列として出力するにはどうすればよいですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQL Server における DateTime2 と DateTime の比較
-
[解決済み] ある列の最大値を持つ行を取得する
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] DISTINCTでCOUNT(*)を選択する
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] Railsコンソールで実行されたSQLクエリを表示するには?