Rails ActiveRecord查询日期范围

Cod*_*arr 31 ruby activerecord ruby-on-rails

我正在尝试在我的控制器中使用以下行来捕获距离当前日期不到一周的所有任务:

@due_this_week = current_user.tasks.where(due_date: Date.today..1.week.from_now)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,即使我知道我在四天和六天内完成任务,也没有找到任何结果.这是使用范围查询的唯一实例变量.我还有另一个可以找到过期任务的工作:

@overdue = current_user.tasks.where("due_date <= ?", Date.today)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

NAR*_*KOZ 65

应该:

@due_this_week = current_user.tasks.where(due_date: 1.week.ago..Date.today)
Run Code Online (Sandbox Code Playgroud)


Bru*_*mme 5

仅供参考,您也可以使用单边范围。

对于截止日期为 1 周前的所有电话

@due_this_week = current_user.tasks.where(due_date: 1.week.ago..)
Run Code Online (Sandbox Code Playgroud)

或截止日期为今天的所有电话

@due_this_week = current_user.tasks.where(due_date: ..Date.today)
Run Code Online (Sandbox Code Playgroud)


Cod*_*arr 1

事实证明,我的控制器在某种程度上没有正确设置,并且在创建新分配时不再保存 的current_userID,这就是找不到它们的原因。我使用 Rails 控制台并在提交的最后几个作业上运行查找来解决这个问题。被user_id设置为nil. 感谢您的协助@mu 太短了。