在[IN]的rails with或子句中搜索

vid*_*unj 5 database ruby-on-rails clause where

我在rails中使用此查询

此处@album_ids,@country_ids是数组

@audios= Audio.where({:album_id => @album_ids, :country_id => @country_ids})
It produces following SQL:

 Audio Load (0.3ms)  SELECT `audios`.* FROM `audios` WHERE `audios`.`album_id` IN (1, 2) AND `audios`.`country_id` IN (1, 2)
Run Code Online (Sandbox Code Playgroud)

但我想将查询生成为:

 Audio Load (0.3ms)  SELECT `audios`.* FROM `audios` WHERE `audios`.`album_id` IN (1, 2) OR `audios`.`country_id` IN (1, 2) 
Run Code Online (Sandbox Code Playgroud)

OR 而不是 AND

提前致谢

Kul*_*ini 7

对于Rails 3(使用AREL),

at = Audio.arel_table
audios = Audio.where(at[:album_id].in(@album_ids).or(at[:country_id].in(@country_ids)))

# Audio Load (0.3ms)  SELECT `audios`.* FROM `audios` WHERE ((`audios`.`album_id` IN (1, 2) OR `audios`.`country_id` IN (1, 2)))
Run Code Online (Sandbox Code Playgroud)