如何获取Rails的每周记录?

时间:2017-01-07 17:32:05

标签: ruby-on-rails

我的付款模型包含数据金额属性。现在我需要获取页面上当前周的所有记录。我想使用某种分页,例如:在第一页,我获得本周的所有记录,第二页 - 上周的记录等。

在每个页面上,我需要在本周获得总金额,并且每天平均金额

所以,我有两个问题:

  • 如何获取页面上特定周的所有记录?
  • 如何计算本周的金额?

现在我所做的一切都是有数周和数量的数组

def self.count_by_week
    raw_result = group_by_week_and_state.count

    # {['2014-12-01-2014-12-07', 'foo'] => 100, ['2014-12-01-2014-12-07', 'bar'] => 100, '...' => '...'}

    raw_result.each_with_object({}) do |(k, v), result|
       result[k[0]] ||= {}
       result[k[0]][k[1]] = v
    end
  end

  def self.group_by_week_and_state
    group("#{weekday_query(0)} || \'-\' || #{weekday_query(6)}").group('amount')
  end

  # build sql part for day offset of week (0 => mon, 6 => sun)
  def self.weekday_query(offset)
    "to_char(cast(date_trunc(\'week\', created_at) as date) + #{offset}, \'YYYY-MM-DD\')"
  end

1 个答案:

答案 0 :(得分:1)

您可以使用groupdate gem来完成此任务。

https://github.com/ankane/groupdate

成功对记录进行分组后,获取每个组的总和太简单了。