求和差并计算总和

时间:2013-04-25 01:21:02

标签: ruby-on-rails activerecord sum

我有三个模型:属于Concerts的用户,属于Regions。用户在区域中听音乐会。模型belongs_to关系分别与用户通过=>建立。音乐会。

class Region < ActiveRecord::Base
  has_many :concerts
  has_many :users, :through => :concerts
end

我在Users模型中有一个start_time和end_time,这样我就可以记录用户收听音乐会的分钟数。在用户视图中,我可以通过以下方式呈现:

<%= user.start_time.to_i - user.end_time.to_i %>

但是如何计算音乐会级别所有用户收听的总分钟数。

@total = @users.sum(:group=>:concert, :conditions => [???]) 

1 个答案:

答案 0 :(得分:0)

据我所知,这应该适用于MySQL,其他数据库将拥有自己的功能用于此类事情。我在搜索中看不到明显的便携式功能,但您可以尝试滚动自己的计算。

@total = @users.sum(:select=>'TIMESTAMPDIFF(MINUTE, user.start_time, user.end_time) AS duration', :group=>:concert)