简单的总和不在Rails中工作

时间:2012-06-21 08:12:50

标签: ruby-on-rails

我想总结一下列。

在我的控制器中

         def index
          @performance_reports = PerformanceReport.all
         end

我的错误:

       undefined method `+' for #<PerformanceReport:0x4a55690>
74:         <td><%=  @performance_reports.sum(:clicks)%></td>

有什么问题?

2 个答案:

答案 0 :(得分:4)

尝试

 @performance_reports = PerformanceReport.select('*')
视图中的

<td><%=  @performance_reports.sum(:clicks)%></td>

基本上PerformanceReport.all将加载整个表并返回Array PerformanceReport你无法在Array上链接查询!!!

PerformanceReport.select('*')将返回ActiveRecord::Relation,您可以在关系

上链接任何AR方法

我建议你阅读rails lazing loading strategy Lazy loading (will_paginate sample)Rails Query Interface

令人敬畏的Rails

答案 1 :(得分:1)

sum是ActiveRecord方法,因此您无法在已选择的对象上使用它! ypu可以做什么:

PerformanceReport.sum(:clicks)

因为然后查询了数据库!