【Rails】where句の使い方 - 条件を絞ってレコード取得する方法を初心者向けに解説

Web開発

はじめに

Ruby on Railsを使って開発を進める中で、where句は頻繁に登場する重要なメソッドです。where句はデータベースから特定のレコードを抽出するために使用され、RailsのActiveRecordでよく使われます。このチュートリアルでは、where句の基本的な使い方を初心者向けに解説し、実務に活用できるコード例を紹介します。

この記事を読むとわかること

  • Railsでのwhere句の基本的な使い方
  • where句の実務での活用方法
  • 具体的なコード例を使って、Railsの検索機能を実装する方法

Railsのwhere句とは?

where句は、データベースのテーブルから特定の条件に一致するレコードを検索するためのメソッドです。SQLのWHERE句に対応しており、特定のカラムの値が条件を満たすレコードを取得します。

例えば、次のようなSQL文を見てみましょう。

SELECT * FROM users WHERE age > 30;

このSQLは、「年齢が30歳より大きいユーザー」を抽出するクエリです。同じ操作をRailsでは次のように書きます。

User.where('age > ?', 30)

Railsのwhereメソッドは、SQLに似た構文でデータを検索できる便利な方法を提供します。

where句の基本的な使い方

まず、where句の最も基本的な使い方を紹介します。where句では、カラム名と条件を指定することでレコードを絞り込むことができます。

例1: 単純な条件でレコードを絞り込む

例えば、usersテーブルにおいて、ageが30以上のユーザーを検索する場合は次のように書きます。

User.where('age >= ?', 30)

このコードは、ageが30歳以上のユーザーを検索します。?はプレースホルダーで、SQLインジェクションのリスクを避けるために使用されます。

例2: 複数の条件を指定する

where句では複数の条件を組み合わせることもできます。例えば、ageが30歳以上で、activeカラムがtrueのユーザーを検索する場合は次のように書きます。

User.where('age >= ? AND active = ?', 30, true)

ここでは、ANDで2つの条件を結合しています。このように、複数の条件を組み合わせてレコードを絞り込むことができます。

条件式の構文

Railsのwhere句では、いくつかの異なる条件式を使うことができます。以下の例では、異なる演算子を使った条件式を紹介します。

例3: =(等しい)条件

特定のユーザーIDを持つユーザーを検索する場合は、=演算子を使用します。

User.where(id: 1)

これは、idが1のユーザーを検索します。この書き方は簡潔で、よく使われます。

例4: IN(複数の値に一致)条件

複数の値に一致するレコードを検索する場合、IN演算子を使うことができます。例えば、idが1または2または3のユーザーを検索する場合は次のように書きます。

User.where(id: [1, 2, 3])

このコードは、idが1、2、3のいずれかに一致するユーザーを取得します。

例5: LIKE(部分一致)条件

文字列の部分一致を検索する場合は、LIKE演算子を使います。例えば、名前に「田中」が含まれているユーザーを検索する場合は次のように書きます。

User.where('name LIKE ?', '%田中%')

このコードは、nameカラムに「田中」を含むユーザーを検索します。

where句の応用例

where句は、強力な検索機能を提供します。実務では、より複雑な条件で検索することがよくあります。いくつかの応用例を紹介します。

例6: 日付範囲で検索

たとえば、created_atカラムが特定の日付範囲内にあるユーザーを検索する場合は、次のように書きます。

User.where(created_at: Date.new(2024, 1, 1)..Date.new(2024, 12, 31))

これは、2024年1月1日から12月31日までの間に作成されたユーザーを検索します。

例7: OR条件を使う

複数の条件をORで結びつけて検索することもできます。たとえば、ageが30歳以上またはactivetrueのユーザーを検索する場合は次のように書きます。

User.where('age >= ? OR active = ?', 30, true)

このコードは、いずれかの条件を満たすユーザーを検索します。

まとめ

Railsのwhere句は、データベースから特定のレコードを絞り込むために便利なメソッドです。基本的な使い方から、複雑な条件での検索まで、さまざまなシーンで活用できます。この記事で紹介したコード例を元に、実務でよく使われる検索機能を実装してみてください。where句を使いこなすことで、より効率的なデータ操作ができるようになるでしょう。

Rubyをマスターしよう

この記事で学んだRubyの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。