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 / Rails アプリケーションの開発が得意領域。設計・実装・運用まで含めてプロダクト開発が好きです。

Questalという目標達成コミュニティサービスを開発しました。仲間と一緒に目標達成に取り組みたい方はぜひご利用ください。