rails app:相同的指令,一个使用范围,其他不是,但结果不一样

时间:2014-10-20 11:05:28

标签: ruby-on-rails scope

我有这样的范围:

scope :not_undo, where(undo: false)

非常简单,我想这样做:

activities.not_undo.sum(:foo)

但发生错误:

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

事实上,在我的单元测试开始时,&#34;活动&#34;是空的。但如果我这样做:

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

即使它是空的,也可以。

那么为什么要使用范围更改结果呢?我该怎么办?

THX。

1 个答案:

答案 0 :(得分:2)

您需要将lambda作为第二个参数传递给scope方法

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