2014-10-13 75 views
1

在使用Rails 4.1構建的我的票務應用程序中,有兩個日期時間字段(booking_start_date和booking_end_date)。我用下面的代碼,以確保門票是可用性和更新狀態:使用日期時間字段對象時忽略created_at時間戳

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

因此,您的問題是,您想知道如何解釋場景 - '只要booking_start_date比created_at日期早至少一分鐘,狀態就會更新'。那是對的嗎? –

+0

@TomKadwill是的,它是! – user3224820

回答

1

如果你想添加一些邏輯時booking_start_date領先於created_at日期ATLEAST一分鐘,那麼你可以添加其他ELSIF和寫類似運行:

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

我希望這能回答你的問題,如果不發表評論,我會更新答案。

+0

是正確的用法嗎?我得到'未定義的方法'+'爲零:NilClass'錯誤。 – user3224820

+0

你保存了記錄嗎?記錄保存後,只會設置「id」和「created_at」之類的東西。只要設置了'created_at','+'運算符就可以正常工作。 –

+0

這是一個before_save方法,所以我猜這不是。 – user3224820