2016-06-28 4 views
1

私は複雑なクエリを少し書いています。ActiveRecordモデルにフィールドが存在しないクエリ

それが他のメソッドを呼び出す他の三つのメソッドを呼び出しOrderクラスのメソッドだし、年末までに、約5私は否定的なバランスを持っているすべてのOrderのを見つけたいが、バランスがOrderにフィールドではありませんクラスでは、これを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

あなたはOrder.balanceが0未満のあった場所すべてを見つけることを試みていた何かをした場合はどう? – myself

+0

'Order.where(Order.balance <0)'私が持っているものはすべて:/ – myself

+0

残高はクラスメソッドではありません。 – Arel

答えて

0

あなたはSQLに加算と減算を行うことができます。その後、charge_paymenttotalを仮定し、credit_paymentはordersテーブル上のすべての整数の列です:

Order.where("(total - (charge_payment + credit_payment)) < 0") 
関連する問題