2013-08-01 50 views
0

以下是支付表中的列:如何在rails 3.2中的SQL分組中應用條件?

user_id, amount, paid (boolean) 

在Rails中,我們可以做SQL分組如下:

grouping = Payment.all(:select => "sum(amount) AS total", :group => "user_id") 

我們的問題是在同一個SQL,如何總結共爲已付款的付款?下面是我們要在理想跟蹤準代碼做:

grouping = Payment.all(:select => "sum(amount) as total, sum(amount if paid) as total_paid", :group => 'user_id') 

我們需要做的這兩個總和ONE SQL。謝謝您的幫助。

回答

1

您想獲得用戶支付的總金額?

單程

payment.rb

scope :paid_payments, where(paid: true) 

controller

user.payments.paid_payments.sum(:amount) 

應該回到你的所有選擇付款的總和。

另一種方式:

user.rb

has_many :paid_payments, class_name: "Payment", :conditions => {:paid => true} 

controller

user.paid_payments.sum(:amount) 
+0

我們需要總量和total_paid。有沒有辦法讓他們在一個SQL? – user938363

+0

你的意思是total和total_paid?你還有一個total_paid字段嗎? – rmagnum2002

+0

哦,我明白了..我會考慮它.. – rmagnum2002

相關問題