在Rails中,截止日期小于当前日期时显示所有记录

时间:2015-12-16 04:43:29

标签: ruby-on-rails date

我有一个由due_date和其他字段组成的Quote模型。

我需要编写一个条件,我们必须显示所有记录,其中due_date(日期数据类型并以yyyy-mm-dd格式存储在数据库中)小于当前日期。 例如,current_date是今天的日期,所以我需要显示所有记录,直到昨天。

我写了一个条件但没有工作,你能告诉我哪里出错了吗?

  def past_quotes
      @items = []
      current_date = Time.now.strftime("%Y-%m-%d")
      daily_items = Quote.by_account(@account).active.includes(:company).where('due_date' < current_date)
      @items << Item.new(items: daily_items) unless daily_items.empty?
  end

但仍然显示所有记录,我认为情况是错误的。

2 个答案:

答案 0 :(得分:2)

比较日期时不应使用字符串。 ActiveRecord应该能够直接处理日期

      daily_items = Quote.by_account(@account).active.includes(:company).where('due_date < ?', Date.today)

答案 1 :(得分:2)

您可以尝试以下查询:

def past_quotes
      @items = []
      daily_items = Quote.by_account(@account).active.includes(:company).where('due_date < DATE(?)', Time.now)
      @items << Item.new(items: daily_items) unless daily_items.empty?
  end