我正在创建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)。
答案 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。