日期时间验证

问题描述:

我在我的项目中验证存在问题。我需要在保存预订时验证日期时间。 它显示消息“这个日期是保留的。”但总是创造新的预约:( 它可以是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 

当你做

 @reservation = Reservation.create!(reservation_params) 

它会创建对象并保存检查你的条件之前,你应该做的

 @reservation = Reservation.new(reservation_params) 

这样它只会初始化它并且不保存,除非您的条件得到满足,即@check_count < = 3 然后当您执行.save。它会被保存。

+0

正确的答案。 :) 我忘了“新”的方法-.-真的感谢您的帮助:) – mgmaciekmg