2011-09-09 42 views
8

我有這個範圍:爲什麼在rails 3.1範圍中使用sum會導致錯誤?

scope :total_quantity, sum('quantity') 

當我運行:

MyModel.total_quantity 

我得到這個錯誤:

NoMethodError: undefined method `default_scoped?' for 4:Fixnum 

運行總和方法直接作用

MyModel.sum('quantity') # 4 

我在default_scoped上找不到任何文檔?方法,或者爲什麼它在這裏被調用。你知道是否有辦法解決這個問題?

回答

12

只是嘗試方法,而不是範圍。它的作品像魅力我也面臨同樣的問題,但是當我改變我的範圍方法其工作正常。下面是工作和測試代碼:)

def self.total_quantity 
sum('quantity') 
end 

讓我知道它是否有效! 感謝

+11

作用域兼容的方法返回一個有作用域的對象,而不是像'sum'那樣的數字。您需要使用這種方法來返回最終值,這些值不能進一步限定範圍。 – tadman

+0

真棒,它的工作!謝謝。 –

+0

我也有同樣的問題,我試圖通過範圍找到對象的數量。現在它清楚,謝謝塔德曼 – Abhi

-1

這爲我工作

def self.total_quantity 
sum('quantity') 
end 

但我沒有爲錯誤得到原因,如果我使用範圍,而不是方法。

相關問題