我正在尝试查找名为 length
的列的总和,这是一个简单的整数列,其中包含每条记录持续的秒数。
我有一个搜索表单设置来查询数据库以获取我在 Controller 中设置的某些条件:
@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 %>
在我的 View 中渲染它时,我收到此错误:
undefined method '+' for #<TimeEntry:0x007ffdbbd45b78>
有什么想法吗?非常感谢您的帮助:)
最佳答案
改变
@total_time = @time_entries.sum(:length)
至
@total_time = @time_entries.sum(&:length)
仅供引用,如果您只需要一列来操作,请在查询中使用 :select
子句,例如
@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 ])
关于sql - Ruby on Rails : Finding the sum of a column in a returned search query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556813/