ActiveRecord查询模型上不存在字段的位置

时间:2016-06-28 20:10:52

标签: ruby-on-rails activerecord

我正在尝试编写一些复杂的查询。

我想查找余额为负值的所有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

1 个答案:

答案 0 :(得分:0)

您可以在SQL中进行加法和减法。假设totalcharge_paymentcredit_payment都是订单表上的整数列,那么:

Order.where("(total - (charge_payment + credit_payment)) < 0")