Railsで日付の範囲検索をした際に、「今日〜2ヶ月前まで」みたいな記述を探したが、見つからなかったので自分用のメモとして残します。
実現したいこと
今日から2ヶ月前までに作成されたレコードを取得したい
例)
今日:2019/10/10
2ヶ月前:2019/08/01
上記の例だと、作成日が 2019/08/01 から 2019/10/10 までのレコードを取得したい。
結論
日付の設定
start_month = 2.months.ago.all_month.first
end_month = Time.current
ActiveRecordのwhere
where(created_at: start_month..end_month)
以下は、自分のまとめです。
プログラム
2ヶ月前の日付(Range)を取得(上記の例だと、2019/08/01~2019/08/31)
2.months.ago.all_month
今月の日付を取得(上記の例だと、2019/10/10)
Time.current
つまづいた所
いざ、上の記載(プログラムの段落)でプログラムを組んでも、bad value for range
エラーが出るばかりでうまくいかず、帰宅途中に、2.months.ago.all_month
はその月の初日と末日を含んでいるため、rangeの書き方がおかしいことに気付く。
そして、結論の記載に至る