2012-09-30

Rails3のActiveRecordでOR検索をする

単純にwhereメソッドをメソッドチェインでつないでいくとAND検索になってしまう。

User.where(:owner_flg => true).where(:manager_flg => true)
# => SELECT `users`.* FROM `users` WHERE `users`.`owner_flg` = 1 AND `users`.`manager_flg` = 1;

OR を使って、条件のいずれかに合致するためには以下のように書けばいい。

User.where('owner_flg = ? OR manager_flg = ?', true, true)

他にも方法はありそうだけど、とりあえず。

h3pei's icon

h3pei

Ruby・Ruby on Rails を中心としたバックエンドが得意領域のソフトウェアエンジニアです。設計から実装まで含めてプロダクト開発が好きです。

MENTAでアプリケーション開発や学習の支援をはじめました。お気軽にお問い合わせください。