0

我有一个created_at填充字段的记录。我想做的是知道它是否created_at是在 1-2 周前创建的,意思是第 8、9、10、11、12、13、14 天,而不是 1-7 或 15+。

鉴于我无法在 SQL 中查询这个,那么最好的 Rails 方法是什么?

4

4 回答 4

5
 ((2.weeks.ago)..(1.week.ago)).cover?(record.created_at)

假设 2 周前是 8 月 13 日,1 周前是 8 月 20 日,并且记录的created_at属性位于中间的某个位置,这将返回true

于 2013-08-26T22:28:26.690 回答
1

这适用于 Ruby 2.0.0、Rails 4.0

Record.created_at.between?(((Date.today - 14.days).beginning_of_day),(Date.today.end_of_day))
于 2013-08-26T21:47:18.413 回答
1

你可以使用一个范围

Range.new((Date.today-14.days), 
   (Date.today-7.days)) === record.created_at

根据两周前的意思调整范围参数。

编辑: 一个班轮有点简洁。把它分解。

start_date = (Date.today - 14.days)
end_date = (Date.today - 7.days)

# Now start_date is 2 weeks ago, and end_date is 1 week ago.
#   Test if created_at falls within this range
Range.new(start_date.to_date, end_date.to_date) === record.created_at
于 2013-08-26T22:10:46.673 回答
0

更新了 rails 7.0 的答案

发行说明 - 主动支持移除

删除不推荐使用的支持以使用 Range#include? 不推荐检查日期时间范围中是否包含值。

现在建议使用封面?方法。

例如:

((2.weeks.ago)..(1.week.ago)).cover?(record.created_at)
于 2022-01-10T22:38:35.810 回答