Rails计算几个记录中的数字数据

时间:2013-07-28 15:56:42

标签: ruby-on-rails

我的数据库中有一列,"出现"。用户可以选择不输入任何数字或从1到10的任何数字。我试图将每个用户的所有事件(跨多个记录)添加到总计中。

第1部分 - 将数据过滤到当前用户

@total_occurrences = Event.where(['occurrences <> ?', current_user.id])

到目前为止一切顺利。

第2部分 - 计算列中的数字&#34;出现次数&#34;

不确定如何处理这个...

3 个答案:

答案 0 :(得分:1)

如果你使用rails 4,你可以写:

@total_occurrences = Event.where(user_id: current_user.id).where.not(occurrences: nil)

在rails 3中你可以编写sql查询:

@total_occurrences = Event.where(user_id: current_user.id).where("occurrences IS NOT NULL")

或使用gem Squeel。它允许你这样写:

@total_occurrences = Event.where{(user_id == current_user.id) & (occurrences != nil)}

答案 1 :(得分:1)

至于第二部分,你可以这样做:

sum = 0
Event.where(user_id: current_user.id).pluck(:occurrences).each do |occurrence|
  sum += occurrences
end

Pluck拉出特定列的所有值,然后您只需将它们添加到一起。

答案 2 :(得分:-1)

brendanjcaffrey的回答是我正在寻找的:

Event.where(user_id:current_user.id).where('occurrence&lt;&gt; 0')。pluck(:occurrence).sum