【Rails】whereメソッドで配列を使用してデータを検索する方法

whereメソッドの使い方

whereでデータを取得する際に、カラム名の後ろに配列を指定すると、その値を持つデータを取得できます。

モデル名.where(カラム名: [値1, 値2])

値は一つでも、上記のように複数選択しても取得できます。

参考例

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

Userテーブルから、age => ’21’, ’23’のどちらかの値を持つデータを取得します。

[1] pry(main)> User.where(age: [21, 23])

すると以下のように、21歳と23歳のデータを取得することができました。

 User Load (32.9ms)  SELECT `users`.* FROM `users` WHERE `users`.`age` IN (21, 23)
=> [#<User:0x0000000142738fa0 id: 1, name: "田中", age: 23, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.806163000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.806163000 UTC +00:00>,
 #<User:0x0000000142738eb0 id: 2, name: "田中", age: 21, gender: "women", created_at: Fri, 19 Nov 2021 10:15:21.809896000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.809896000 UTC +00:00>,
 #<User:0x0000000142738de8 id: 3, name: "佐藤", age: 23, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.812049000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.812049000 UTC +00:00>,
 #<User:0x0000000142738d20 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>,
 #<User:0x0000000142738c30 id: 9, name: "宮田", age: 23, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.824770000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.824770000 UTC +00:00>,
 #<User:0x0000000142738af0 id: 11, name: "藤原", age: 21, gender: "men", created_at: Fri, 19 Nov 2021 10:15:21.828604000 UTC +00:00, updated_at: Fri, 19 Nov 2021 10:15:21.828604000 UTC +00:00>]
タイトルとURLをコピーしました