How do I sum up records within Rails 3?

旧街凉风 提交于 2019-12-05 19:13:54

See ActiveRecord::Calculations#sum

by_week = (1...10).inject({}) do |wh, weeks_ago|
  startat = weeks_ago.weeks.ago
  endat = (weeks_ago - 1).weeks.ago
  wh[weeks_ago] = [:magazines, :books, :videos, :greeting_cards, :pens].inject({}) do |sh, attr|
    sh[attr] = ItemsSold.where("sold_date > ? and sold_date <= ?", startat, endat).sum(attr.to_s)
    sh
  end
  wh
end

That will return a hash like {1 => {:magazines => 5, :books => 33, ...}, 2 => {{:magazines => 13, :books => 28, ...}}, ...}, where each key is a week number (1 for this past week, 2 for two weeks ago, etc..) and the value is another hash with the sums.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!