我正在尝试编写一些复杂的查询。
我想查找余额为负值的所有Order
,但余额不是Order
上的字段,而Order
类中的方法调用其他三种方法调用其他方法,最后调用大约5个类,这使得在SQL中执行此操作或编写长AR查询非常困难。
有没有办法在不拉动记录并循环遍历它们的情况下获得结果,并且没有重新实现构建订单余额的每个方法?
作为参考,我现在这样做:
negative_balances = []
Order.find_each {|o| negative_balances << o if o.balance > 0}
@negative_balances = negative_balances.group_by {|o| o.created_at.to_date}
和余额如下所示:
class Order < AR::Base
def balance
total - (charge_payment + credit_payment)
end
end
答案 0 :(得分:0)
您可以在SQL中进行加法和减法。假设total
,charge_payment
和credit_payment
都是订单表上的整数列,那么:
Order.where("(total - (charge_payment + credit_payment)) < 0")