假设我们有一些日期范围,例如:Rails 3中查询多个日期范围
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';
如果只有一个范围是这样的:
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)
?
什么是正确建立此查询的方法?
谢谢
我们不需要用Arel编写sql。 – Snuggs 2015-02-11 14:28:26