2013-04-15 24 views
1

我有一個訂單模型,其中包含一個飲料ID和數量和單位價格,它們相乘成一個總的訂單價值。如何在Rails控制器的組內執行乘法?

在我的應用程序的另一部分,我需要按飲料ID對訂單進行分組,然後對所有訂單值進行求和以給出庫存總值。

當我需要計算手頭的總數量,我不喜歡這樣的控制器:(由orderable_type我過濾器也有返回)

@delivery_total = Order.group(:beverage_id).sum(:quantity, :conditions => {:orderable_type => 'Delivery'}) 

所以我想,當我需要計算總訂單價值,這將是如下:

@delivery_value = Order.group(:beverage_id).sum((:quantity * :price), :conditions => {:orderable_type => 'Delivery'}) 

但是,這並不工作,給錯誤

數量:爲

未定義的方法'*」符號

恐怕我還在學習在這裏...任何人都建議這樣做的正確方法?

回答

1

sum,第一個參數是一個字符串,像這樣:

@delivery_total = Order.group(:beverage_id).sum("quantity * price", :conditions => {:orderable_type => 'Delivery'}) 
+0

謝謝 - 乾淨多了。但是會拋出一個關於找不到列的錯誤:SQLite3 :: SQLException:no such column:total_price:SELECT SUM(total_price)AS sum_total_price,beverage_id AS beverage_id FROM「orders」WHERE「orders」。「orderable_type」='Delivery'GROUP BY beverage_id – Nick

+0

@Nick對不起,我以前的回答是錯誤的。我誤以爲ActiveRecord :: Calculations#sum爲Enumerable裏面的東西。你會嘗試新的答案嗎? –

+0

工程就像一個魅力 - 謝謝! :-) – Nick

相關問題