2012-07-25 43 views
0

salesMy基本設置:
我有一個用戶模型,該模型與工作日模型具有has_many/belongs_to關係。
工作日模型具有名爲「銷售」和「日期」的屬性。添加模型的多個實例的屬性的輸出

我想要做的是在給定的時間範圍內合併不同工作日實例的銷售屬性。 我開始想首先要從這就造成了

NoMethodError: undefined method `sales' for nil:NilClass 

的代碼,用戶添加了所有的銷售看起來是這樣的:

def all_sales 
    s = 0.to_f 
    c = @user.workdays.count 
    for i in (0..c) 
    s += @user.workdays[i].sales 
    end 
end 

請告訴我最優雅的方式來進行此事?

編輯1: 錯字,它是user.workdays [I]。銷售,不.Count之間。對於那個很抱歉。

+0

你怎麼叫它?有一個'零'工作日。另外,'s = @ user.workdays.inject {| acc,w | acc + w.count}',我沒有得到's = 0.to_f',爲什麼不只是's = 0.0'?如果你正在做涉及金錢的有意義的計算,請小心使用浮點數。 – 2012-07-25 23:14:55

+0

甚至'def all_sales; @ user.workdays.sum(&:計數);結束'(未經測試;關閉)。 – 2012-07-25 23:21:30

+0

是不是0.0和0.to_f是一樣的? 0.0或多或少是一個簡短的符號?無論如何,計算並不重要,它只是對利潤的一個非常基本的概述。 – 2012-07-25 23:51:10

回答

1

它可以通過阿雷爾

@user.workdays.sum(:sales) 

也可以做,你可以查詢特定時間間隔

@user.workdays.where("date BETWEEN ? AND ?",start_date, end_date).sum(:sales) 
+0

謝謝,這實際上是我正在尋找的東西。謝謝! – 2012-07-26 01:29:58

相關問題