2

我试图找到一个名为 的列的总和length,它是一个简单的整数列,其中包含每条记录持续的秒数。

我有一个搜索表单设置来查询数据库中我在控制器中设置的一些条件:

@time_entries = TimeEntry.find(:all, :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) AND (date BETWEEN ? AND ?)", current_user, '%'+params[:projecttitle]+'%', @startdate, @enddate ])

然后我使用不起作用的代码跟踪该查询,尝试对length返回的查询的列求和...

@total_time = @time_entries.sum(:length)

然后当我在我的视图中渲染它时<%= @total_time %>,我得到了这个错误:

undefined method '+' for #<TimeEntry:0x007ffdbbd45b78>

有任何想法吗?非常感谢您的帮助:)

4

1 回答 1

4

改变

@total_time = @time_entries.sum(:length)

@total_time = @time_entries.sum(&:length)

仅供参考,如果您只需要一列来操作:select查询中的 use 子句,例如

@time_entries = TimeEntry.find(:all, :select => 'length', 
                  :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) 
                           AND (date BETWEEN ? AND ?)", current_user, 
                           '%'+params[:projecttitle]+'%', @startdate, @enddate ])

如果您只需要表中某些列的总和,您可以使用sum方法,例如

@total_time = TimeEntry.sum(:length, 
                  :conditions => [ "(user_id = ?) AND (projecttitle LIKE ?) 
                           AND (date BETWEEN ? AND ?)", current_user, 
                           '%'+params[:projecttitle]+'%', @startdate, @enddate ])
于 2012-07-19T08:34:05.940 回答