避免在多个条件where子句中搜索数据库两次

时间:2013-01-21 21:11:12

标签: ruby-on-rails arrays where multiple-conditions

我想知道是否存在Rails魔法以避免在以下情况下搜索数据库两次:

背景:我正在搜索用户的订单,这些订单可能是PENDING或SENT,并且今天到期。

这是伪代码:

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

现在问题是这会搜索数据库两次。我想在一次搜索中做到这一点,并希望指出RoR将如何做到这一点。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

尝试以下链条件 -

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