概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: Ruby on Rails / ActiveRecord - turn every query to a sql code
- 原文公開日: 2018/01/18
- 著者: Paweł Dąbrowsk
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』をどうぞお役立てください。
関連記事
[Rails5] Active Support Core ExtensionsのString#acts_like_string?