2010-02-20 79 views
3

我有一個錯誤,我找不到解決方案。.sum上未定義的方法錯誤

當我運行:

Week.find(1).results.sum('box') 

一大家子柱箱的總和的它的作品完美!

但是,當我在它應用過濾器:

Week.find(1).results.find(:all, :joins => [:seller],:conditions => ['sellers.user_id = ?', 1]).sum('caixas') 

我得到一個錯誤NoMethodError: undefined method '+' for #<Result:0x103239e58>

返回的對象是我將它打印在控制檯,看不出什麼毛病一樣。

有人知道這件事嗎?

Tks!

回答

3

ActiveRecord#sum是一種ActiveRecord方法。

第一種情況是有效的,因爲Week.find(1).results返回一個關聯代理,它公開周類的相同方法。

在第二種情況下,您在Array對象上調用#sum,而不是ActiveRecord模型。 如果您希望第二種情況起作用,您應該使用範圍或關聯代理。

變化

Week.find(1).results.find(:all, :joins => [:seller],:conditions => ['sellers.user_id = ?', 1]).sum('caixas') 

Week.find(1).results.scoped(:joins => [:seller], :conditions => ['sellers.user_id = ?', 1]).sum('caixas')