たとえば、次のような日付範囲があるとします。
ranges = [
[(12.months.ago)..(8.months.ago)],
[(7.months.ago)..(6.months.ago)],
[(5.months.ago)..(4.months.ago)],
[(3.months.ago)..(2.months.ago)],
[(1.month.ago)..(15.days.ago)]
]
と属性を持つPost
モデル。:created_at
値がこの範囲内にある投稿を見つけたいcreated_at
ので、目標は次のようなクエリを作成することです。
SELECT * FROM posts WHERE created_at
BETWEEN '2011-04-06' AND '2011-08-06' OR
BETWEEN '2011-09-06' AND '2011-10-06' OR
BETWEEN '2011-11-06' AND '2011-12-06' OR
BETWEEN '2012-01-06' AND '2012-02-06' OR
BETWEEN '2012-02-06' AND '2012-03-23';
このような範囲が 1 つしかない場合:
range = (12.months.ago)..(8.months.ago)
次のクエリを実行できます。
Post.where(:created_at => range)
クエリは次のようになります。
SELECT * FROM posts WHERE created_at
BETWEEN '2011-04-06' AND '2011-08-06';
このような表記を使用してこのクエリを作成する方法はありますPost.where(:created_at => range)
か?
このクエリを作成する正しい方法は何ですか?
ありがとうございました