【问题标题】:Group by Week with starting week beginning at first of month with groupdate gem Ruby on Rails 6使用 groupdate gem Ruby on Rails 6 按周分组,从每月的第一天开始
【发布时间】:2020-07-21 12:17:37
【问题描述】:

我正在使用 Ankane 的 groupdate gem 作为上下文。当我尝试group_by_week 获取一系列日期时,在某些情况下,它会从包含上个月日期的一周开始。我知道某些月份的一周开始不同。但是,我想group_by_week 并强制结果保持在该月的日期范围内。如何让group_by_week 方法保持在给定月份的限制范围内?示例:return group_by_week(范围:7 月 1 日 - 7 月 31 日).sum(:powerups)

在 group_by_week 结果中返回上个月日期的代码示例。

date_finder.rb

target_date = Date.new(Date.today.year, Date.today.month, 1)

Post.group_by_week(:created_at, range: target_date.beginning_of_month..target_date.end_of_month).sum(:view_count)

结果示例:返回 2020 年 6 月 28 日 - 2020 年 7 月 26 日 预期结果:2020 年 7 月 1 日 - 2020 年 7 月 31 日

【问题讨论】:

    标签: ruby-on-rails ruby date


    【解决方案1】:

    您需要选择所需的记录,然后按周分组...

    target_date = Date.today.beginning_of_month
    target_range = target_date..target_date.end_of_month
    
    Post.where(created_at: target_range).group_by_week(:created_at, range: target_range).sum(:view_count)
    

    【讨论】:

    • 我明天会测试它并给出我的反馈。
    • 我仍在收到前一个月末的记录。例如,当我在 7 月使用您的方法时……我将第 1 周设为 2020 年 6 月 28 日至 2020 年 7 月 7 日。第 2 周设为 2020 年 7 月 5 日至 2020 年 7 月 12 日。等等。它不只返回 7 月的日期,而是以周计算总和。
    • 如果可能的话,你能测试一下你得到的结果是否和我一样吗?
    • 我会试一试,在接下来的 24 小时内回复您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 2014-06-29
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多