我有一个由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
但仍然显示所有记录,我认为情况是错误的。
答案 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