检查日期时间字段是否等于Date.today

时间:2015-05-26 14:50:07

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试检查赋值的due_date(datetime数据类型)是否等于Date.today。我需要帮助的逻辑是'due_date:Date.today'部分。提前谢谢。

@student_assignments = StudentAssignment.joins(:assignment).where(assignments: { due_date: Date.today })

3 个答案:

答案 0 :(得分:1)

.where("DATE(assignments.due_date) = ?", Date.today)

答案 1 :(得分:0)

这是一个可能的解决方案:

{ due_date: (Date.today.beginning_of_day..Date.today.end_of_day) }

答案 2 :(得分:0)

要与datetime列进行比较,您需要拥有DateTime对象。但是,如果您将权益与DateTime.now.beginning_of_day进行比较,则只会将分配与00:00的到期匹配。

相反,如果您想要今天到期的分配,您可以这样做:

StudentAssignment.joins(:assignment)
         .where(assignments: { 
            due_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day 
         })

您可以创建命名范围:

class Assignment < ActiveRecord::Base 
  scope(:due_today) -> {
    where(due_date:DateTime.now.beginning_of_day..DateTime.now.end_of_day )
  }
end