Rails tips: `to_sql`でクエリをSQLに変換する(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

Rails tips: to_sqlでクエリをSQLに変換する(翻訳)

Railsのto_sqlメソッドはRubyプログラマーならよくご存知かと思いますが、駆け出しの開発者はまだよく知らないかもしれません。このメソッドは非常に有用なので、改めてご紹介したいと思います。

背後の動作を明らかにするto_sql

実はto_sqlは素晴らしいデバッグツールであり、ある種のコードマジックを学ぶときにも役立ちます。ActiveRecordのDSLは実に小ざっぱりとしていますが、その背後では小ざっぱりしてないSQLクエリが生成されています。次のようにto_sqlを使うことでこのSQLクエリを白日の下に晒すことができます。

Location.where(city: 'New York').to_sql

サブクエリ

to_sqlメソッドはデバッグにももちろん有用ですが、複雑なサブクエリを書かなければならなくなったときにも役立ちます。いきなり生SQLを書くのではなく、ActiveRecordクエリ呼び出しを行ってから最後にto_sqlに渡し、そのクエリ全体を別のクエリに渡すことができます。高度なトピックなので、これについては日を改めてご紹介したいと思います。

to_sqlのようなスーパー便利なメソッドを他にもご存知でしたら、ぜひコメント欄でお知らせください。

RSpec & TDDの電子書籍を無料でダウンロード

もっと稼ぎたい方や会社をさらに発展させたい方へ: テスティングのスキルの重要性にお気づきでしょうか?テストを正しく書き始めることが、唯一のファーストステップです。無料でダウンロードいただける私の書籍『RSpec & Test Driven Developmentの無料ebook』をどうぞお役立てください。

関連記事

Rails: マイグレーションを実行せずにマイグレーションのSQLを表示する(翻訳)

[Rails5] Active Support Core ExtensionsのString#acts_like_string?

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ