2014-10-20 52 views
0

我有這樣一個範圍:Rails應用程序:相同的指令,一個使用範圍,其他沒有,但不相同的結果

scope :not_undo, where(undo: false) 

很簡單,我想做的事:

activities.not_undo.sum(:foo) 

但出現錯誤:

NoMethodError: undefined method `call' for #<ActiveRecord::Relation []> 

事實上,在我的單元測試開始時,「活動」是空的。但如果我這樣做:

activities.where(undo: false).sum(:foo) 

它的工作原理,即使它是空的。

那麼爲什麼使用範圍會改變結果呢?我能怎麼做?

thx。

回答

2

您需要通過lambda作爲第二個參數scope方法

scope :not_undo, -> { where(undo: false) } 
+0

好了,爲什麼沒有raisl錯誤時occure沒有拉姆達? thx糾正。 – Matrix 2014-10-20 13:07:42

相關問題