Ruby on rails 查询一个月内一周内的所有记录

Ruby on rails 查询一个月内一周内的所有记录,ruby-on-rails,Ruby On Rails,我正在创建一个Rails 5应用程序。 在这个应用程序中,我得到了调查模型。我能够运行查询(使用范围)以获取特定月份的所有调查,以及特定季度的所有调查,但我也希望获取一个月内特定周的所有调查,我如何才能做到这一点 这是我的季度和月度范围 scope :period_quarter, -> (year, quarter) { where(created_at: Date.new(year.to_i, 3 * quarter.to_i - 2).all_quarter) } scope :pe

我正在创建一个Rails 5应用程序。 在这个应用程序中,我得到了调查模型。我能够运行查询(使用范围)以获取特定月份的所有调查,以及特定季度的所有调查,但我也希望获取一个月内特定周的所有调查,我如何才能做到这一点

这是我的季度和月度范围

scope :period_quarter, -> (year, quarter) { where(created_at: Date.new(year.to_i, 3 * quarter.to_i - 2).all_quarter) }
scope :period_month, -> (year, month) { where(created_at: Date.new(year.to_i, month.to_i).all_month) }

如何添加范围以获取一个月内某一周的所有调查。我将提供年、月和周(1-5)。

考虑您一直在使用的相同方法,仅考虑并可能根据需要获得正确的开始日期。

要获得特定周的日期,您可以使用以下方法:

def week(year, month, week_num)
    Date.new(year, month, 7 * week_num - 6)
end

week(2018, 8, 1).beginning_of_week # => Mon, 30 Jul 2018
week(2018, 8, 1).end_of_week       # => Sun, 05 Aug 2018
week(2018, 8, 1).all_week          # => Mon, 30 Jul 2018..Sun, 05 Aug 2018
要在查询中使用它,可以如下使用:

where(created_at: week(2018, 8, 1).all_week)

这将把一个月的第一周计算为1所在的周。是但是,如果您想让它在一个月的第一个整周内使用,您可以删除-6。

像这样吗?范围:period_week,->(year,week){where(created_at:Date.new(year.to_i,week.to_i.all_week)}我需要获得所选月份的特定周(1-5)。