2013-01-21 35 views
1

不知多条件搜索数据库两次,如果有Rails的魔术,以避免在下列情况下搜索数据库两次:避免在where子句

背景:我正在寻找从用户的订单,其是出台或SENT今天到期。

下面是伪代码:

order_array = Order.where(:filled => pending) || Order.where(:fileld => done, :due => today) 

现在的问题是,这个搜索数据库的两倍。我想在一次搜索中做到这一点,并会赞赏RoR如何做到这一点。

回答

0

我认为这是你在找什么:

order_array = Order.where("filled = 'PENDING' OR (filled = 'SENT' AND due BETWEEN ? AND ?)", Time.zone.now.beginning_of_day, Time.zone.now.end_of_day) 
+0

酷!我想知道是否有一个Rails“快捷方式”来避免输入SQL文本,以供我自己的启发。但这是一个非常有价值的解释,谢谢。 – Laurent

+0

不客气@Laurent;)不要忘记接受答案 – MrYoshiji

0

尝试像下面链状况 -

Customer.where(:reseller_id => :map_reseller_id).where(:is_deleted_by_reseller => false)