50
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのmodelで【WHERE カラム名 IN [配列] OR カラム名 IN [配列]】検索するメソッドの書き方

Last updated at Posted at 2015-03-31

Railsのmodelで、ちょっと複雑なSQLの処理をしようとしたら、かなりハマりました…orz

という事で同じように困っている方の役に立てればなと思います☆

#【WHERE カラム名 IN [配列] OR カラム名 IN [配列]】をこう書いた!

Testモデルで、id1・id2・id3にそれぞれINかつORで検索して取得するという処理の場合です。

上記では配列と記載していますが、配列ではない場合にも対応しなければいけなかったため、下記のように対応しました。

ids1 = [1, 2, 3]
ids2 = [10, 20, 30]
ids3 = 100

Test.where("id1 IN (?) OR id2 IN (?) OR id3 IN (?)" ,ids1, ids2, ids3)

これでSQLは

SELECT * FROM tests WHERE (id1 IN (1, 2, 3) OR id2 IN (10, 20, 30) OR id3 IN (100));

#おわりに
まだまだ初心者なので、もっと良い書き方があれば知りたいです!

以上で終わりになります。
閲覧ありがとうございました☆

50
47
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?