.sum上的未定义方法错误

时间:2010-02-20 15:55:14

标签: ruby activerecord sum

我有一个错误,我无法找到解决方案。

当我跑步时:

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

获得列框的SUM,它完美无缺!

但是当我在其中应用过滤器时:

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

我收到错误NoMethodError: undefined method '+' for #<Result:0x103239e58>

返回的对象与我在控制台上打印它一样,并没有看到任何错误。

有人知道一些事情吗?

韩国社交协会!

1 个答案:

答案 0 :(得分:3)

ActiveRecord#sum是ActiveRecord方法。

第一种情况有效,因为Week.find(1).results返回一个公开Week类相同方法的关联代理。

在第二种情况下,您在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')