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)

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