ruby Rails活动记录查询日期范围

zysjyyx4  于 2022-12-03  发布在  Ruby
关注(0)|答案(3)|浏览(205)

我尝试在控制器中使用下面的代码行来捕获所有在当前日期后不到一周内到期的任务:

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

由于某种原因,即使我知道我有任务在4天和6天内到期,它也找不到任何结果。这是唯一使用范围查询的示例变量。我有另一个可以很好地查找过期任务的示例变量:

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

我错过了什么?

pkwftd7m

pkwftd7m1#

结果发现我的控制器设置不正确,在创建新任务时不再保存current_user的ID,这就是为什么它们没有被找到的原因。我用rails控制台找到了这个问题,并对最后提交的几个任务运行了一个查找。user_id被设置为nil。感谢assist @mu太短了。

ws51t4hk

ws51t4hk2#

仅供参考,您也可以使用单侧范围。
适用于到期日为1周前的所有呼叫

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

或截止到今天的所有呼叫

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

zi8p0yeb3#

应道:

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

相关问题