2015-07-12 151 views
2

我在我的項目中驗證存在問題。我需要在保存預訂時驗證日期時間。 它顯示消息「這個日期是保留的。」但總是創造新的預約:( 它可以是3個相同的時間日期值而不是更多。當我在我的代碼有問題嗎?日期時間驗證

(我學習的回報率,所以,請耐心等待。:)

def create 
    @reservation = Reservation.create!(reservation_params) 
    @check_count = Reservation.select(:date).where('date = ?', @reservation.date).count 
    if @check_count <= 3 
     if @reservation.save! 
      ReservationMailer.new_service(@reservation).deliver 
      flash[:success] = "Successfully created reservation." 
      redirect_to root_path 
     else 
      render 'new' 
     end 
    else 
     flash[:error] = "This date is reserved." 
     render 'new' 
    end 
end 

回答

1

當你做

 @reservation = Reservation.create!(reservation_params) 

它會創建對象並保存檢查你的條件之前,你應該做的

 @reservation = Reservation.new(reservation_params) 

這樣它只會初始化它並且不保存,除非您的條件得到滿足,即@check_count < = 3 然後當您執行.save。它會被保存。

+0

正確的答案。 :) 我忘了「新」的方法-.-真的感謝您的幫助:) – mgmaciekmg