【Rails】whereで複数条件を1行で書く

1 min read読了の目安(約600字

whereメソッドは、テーブルの条件に一致するレコードを取得するメソッドです。主に検索で使用されています。

結論

先に結論を書きます。以下のような記法です。

モデル名.where("(カラム名 = ?) OR (カラム名 = ?)", 変数,変数)

実際

Post.where("(id = ?) OR (user_id = ?)", 5, 6)

whereメソッドの書き方

whereメソッドを指定するには、シンボルの説明と文字列の説明の2つの方法があります。
それぞれの指定方法を順番に見ていきましょう。

シンボル指定

記号を指定する場合の説明は次のとおりです。

モデル名.where(カラム名: 条件)

実際

Post.where(id: 5)

文字列指定

文字列を指定する場合は以下のとおりです。

モデル名.where("カラム名 = 条件")

実際

Post.where("id = 5")

この種のコードを記述する方法は2つありますが、実際には、条件を使用して検索する場合、where(カラム名: "条件")を指定することによって定義されます。
これは、SQLインジェクションと呼ばれるセキュリティホールを防ぐためです。