查询一个月中一周内的所有记录

时间:2018-08-13 22:00:02

标签: ruby-on-rails

我正在创建Rails 5应用程序。 在这个应用程序中,我得到了Survey模型。我能够运行查询(使用范围)以获取特定月份的所有调查以及特定季度的所有调查,但是我也想获取一个月中特定星期的所有调查,我该怎么做?

这些是我的季度和月份范围

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)。

2 个答案:

答案 0 :(得分:0)

请考虑您一直使用的相同方法,仅根据需要使用all_week甚至可能是beginning_of_week才能获得正确的开始日期。

答案 1 :(得分:0)

要获取特定星期的日期,您可以使用以下方式:

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。