使用Datetime字段对象时忽略created_at时间戳

时间:2014-10-13 05:47:41

标签: ruby-on-rails

在我使用Rails 4.1构建的票务应用中,有两个日期时间字段(booking_start_date和booking_end_date)。我使用以下代码来确保票证的可用性并更新状态:

def check_start_date
    if(self.booking_start_date >= DateTime.now && DateTime.now < self.booking_end_date)
        if(self.ticket_quantity.to_i > 0) then  
          self.status = 'Open'
        else
          self.status = 'Sold Out'
        end
    elsif(DateTime.now < self.booking_start_date)
        self.status = 'Booking Available soon'

    elsif(DateTime.now >= self.booking_end_date)
        self.status = 'Closed'
    end
end

用户通常需要几分钟才能填写故障单创建表单。因此,如果用户在上午10:30开始(在booking_start_date字段中自动填充)并且直到10.35创建表单,则票证的状态保持为空。简单地说,只要booking_start_date比created_at日期提前一分钟,状态就会更新。我如何确保也考虑这种情况?

1 个答案:

答案 0 :(得分:1)

如果你想在booking_start_date至少比created_at日期提前一分钟时添加一些逻辑来运行那么你可以添加另一个elsif并写下如下内容:

elsif(self.created_at + 1.days < self.booking_end_date)
  # your logic

我希望能回答你的问题,如果不发表评论,我会更新答案。