sql - Ruby on Rails : Finding the sum of a column in a returned search query

标签 sql ruby-on-rails ruby-on-rails-3

我正在尝试查找名为 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/

相关文章:

sql - 将具有相同 ID 的多行合并为一行

ruby-on-rails - 在 rails 中使用复合键连接表

ruby-on-rails - 从 Fitbit API curl 和解析 URL

ruby-on-rails - 访问文件上传而不保存文件,然后将其作为附件通过电子邮件发送

mysql - 民意调查 Web 应用程序的数据库结构建议

mysql - 有条件更新/插入 - 'END' 附近的语法不正确

c++ - 在 C++ 中连接到 sql?

mysql - Rails 4 ActiveRecord::Base.connection.execute to_json 错误地编码了 DateTime

ruby-on-rails-3 - Rails、Prawn - PDF 显示在浏览器等中

ruby-on-rails - 如何在 `wishlist_id` 的 `wishlist_entry` 字段中保存新愿望 list 的 ID?