Rails ActiveRecord 查询日期范围

48

我正在尝试在我的控制器中使用以下代码来获取当前日期一周内到期的所有任务:

@due_this_week = current_user.tasks.where(due_date: Date.today..1.week.from_now)

由于某种原因,它找不到任何结果,即使我知道我有在四天和六天内到期的任务。这是唯一使用范围查询的实例变量。我还有另一个工作正常以查找过期任务:

@overdue = current_user.tasks.where("due_date <= ?", Date.today)

我错过了什么?

3个回答

97

应该是:

@due_this_week = current_user.tasks.where(due_date: 1.week.ago..Date.today)

1
这如何匹配“所有任务都在当前日期一周之内到期”? - mu is too short
OP犯了一个错误,抱歉。 - NARKOZ
1
甜的。就这些。 - fatfrog
1
这个坏小子我已经点赞有一段时间了,今天又派上用场了! - fatfrog

5

顺便提一下,您也可以使用单边范围。

对于所有截止日期为一周前的呼叫

@due_this_week = current_user.tasks.where(due_date: 1.week.ago..)

或者对于截止日期到今天的所有调用

@due_this_week = current_user.tasks.where(due_date: ..Date.today)

1
原来我的控制器设置有问题,创建新任务时不再保存current_user的ID,这就是它们找不到的原因。我使用rails控制台并在最近提交的几个任务上运行find命令找出了这个问题。 user_id被设置为nil。感谢@mu is too short提供的帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接