如何在rails 3.2中的SQL分组中应用条件?

时间:2013-08-01 04:08:01

标签: sql ruby-on-rails

以下是付款表中的列:

user_id, amount, paid (boolean)

在rails中,我们可以按如下方式进行SQL分组:

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

我们的问题是在SAME SQL中,如何计算支付的总额?这是我们想要在伪代码中做的事情:

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

我们需要在ONE SQL中进行这两个求和。谢谢您的帮助。

1 个答案:

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