ruby – Rails日期比较;日期大于或等于几天前

我的数据库中的日期如下所示:2012-07-23

我试图看看日期是否超过7天前且不到14天前,或者看看日期是否大于14天前,但我没有运气..

这是我的代码

def progress_report_status_check(date)
    progress_date = date.to_date
    seven_days = 7.days.ago.to_date
    fourteen_days = 14.days.ago.to_date

    if seven_days > (progress_date - 7.days.ago.to_date) or (progress_date - 14.days.ago.to_date) < fourteen_days
      "due"
    elsif (progress_date - 14.days.ago.to_date) > fourteen_days 
      "overdue"
    end 
  end

解决方法

def progress_report_status_check(progress_date) # Pass in a date
  if (progress_date < Date.Now-14.days)
    "overdue"
  elsif (progress_date < Date.Now-7.days) 
    "due"
  end 
end

或(不太可读)

def progress_report_status_check(progress_date) # Pass in a date
  (progress_date < Date.Now-14.days) ? "overdue" : ((progress_date < Date.Now-7.days) ? "due" : "") : "" 
  end 
end

根据您的使用情况,您可能希望创建命名范围,例如:

scope :overdue where(:progress_date < Date.Now-14.days)
scope :due where(:progress_date < Date.Now-7.days)

然后你的调用代码可能是这样的

def progress_report_status_check(progress_date) # Pass in a date
  self.overdue? ? "overdue" : self.due? ? : "due" : ""
  end 
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...