我有一个created_at
填充字段的记录。我想做的是知道它是否created_at
是在 1-2 周前创建的,意思是第 8、9、10、11、12、13、14 天,而不是 1-7 或 15+。
鉴于我无法在 SQL 中查询这个,那么最好的 Rails 方法是什么?
我有一个created_at
填充字段的记录。我想做的是知道它是否created_at
是在 1-2 周前创建的,意思是第 8、9、10、11、12、13、14 天,而不是 1-7 或 15+。
鉴于我无法在 SQL 中查询这个,那么最好的 Rails 方法是什么?
((2.weeks.ago)..(1.week.ago)).cover?(record.created_at)
假设 2 周前是 8 月 13 日,1 周前是 8 月 20 日,并且记录的created_at
属性位于中间的某个位置,这将返回true
。
这适用于 Ruby 2.0.0、Rails 4.0
Record.created_at.between?(((Date.today - 14.days).beginning_of_day),(Date.today.end_of_day))
你可以使用一个范围
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
删除不推荐使用的支持以使用 Range#include? 不推荐检查日期时间范围中是否包含值。
现在建议使用封面?方法。
例如:
((2.weeks.ago)..(1.week.ago)).cover?(record.created_at)