我有一个错误,我无法找到解决方案。
当我跑步时:
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>
返回的对象与我在控制台上打印它一样,并没有看到任何错误。
有人知道一些事情吗?
韩国社交协会!
答案 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')