【Rails】whereを使用して複数条件に対してOR検索する方法

OR検索とは

複数の条件を付して、どれかの条件に当てはまるレコードを取り出すには、whereのOR条件で検索します。

モデル名.where(カラム名: データ).or(テーブル名.where(カラム名: データ))

というように記述します。

*OR条件での検索は、Rails5以降で使えます。

参考例

[前提]name,age,genderの3つのカラムをもつUserテーブル

Userテーブルから、age => ’22’, name => ‘加藤’ この条件のどちらかに当てはまるレコードを取り出します。

[1] pry(main)> User.where(name: '加藤').or(User.where(age: '22'))

すると以下のように、当てはまった三つのレコードを取り出すことができました。

 User Load (1.1ms)  SELECT `users`.* FROM `users` WHERE (`users`.`name` = '加藤' OR `users`.`age` = 22)
=> [#<User:0x0000000148238248 id: 5, name: "山田", age: 22, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.815985000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.815985000 UTC +00:00>,
 #<User:0x000000014822ed88 id: 7, name: "加藤", age: 38, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.820805000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.820805000 UTC +00:00>,
 #<User:0x000000014822e310 id: 8, name: "加藤", age: 21, gender: "women", created_at: Fri, 19 Nov 2021 10:15:21.823235000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.823235000 UTC +00:00>]
タイトルとURLをコピーしました