在我使用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日期提前一分钟,状态就会更新。我如何确保也考虑这种情况?
答案 0 :(得分:1)
如果你想在booking_start_date至少比created_at日期提前一分钟时添加一些逻辑来运行那么你可以添加另一个elsif并写下如下内容:
elsif(self.created_at + 1.days < self.booking_end_date)
# your logic
我希望能回答你的问题,如果不发表评论,我会更新答案。