2013-10-10 85 views
0

我需要在數據庫中創建一個新的日期時間記錄,但首先我需要找出是否已保存相同的日期。我的數據庫中的日期添加4小時。所以,當有一個日期顯示爲下午2點時,數據庫中的同一日期將顯示爲下午6點。如果日期相同,則警報窗口應顯示。檢查日期是否相等,如果不相等則插入數據庫

我試圖做這樣的事情,但我不能完全肯定我要去到正確的方向:

 def create 
     @appointment_new = Appointment.new(:start_date => params[:start_date], 
      :end_date => params[:end_date], :doctor_id => params[:doctor_id], 
      :user_id => params[:user_id]) 

     @appointments = Appointment.all 

     hour = appointment_new.start_date.hour 
     minute = appointment_new.start_date.minute 

     check = false 

     @appointments.each do |appointment| 
     { 
       ????????????? 
     } 
     end 

     if(check) 
      { 
       if @appointment.save 
        flash[:success] = "Welcome!" 
        redirect_to @user 
       else 
        alert("failure!") 
       end 
      } 
      else 
       // do something 
    end 

你覺得呢?謝謝!

回答

2

在您的Appointment模型中,start_date可以成爲關鍵嗎?那麼你可以有這個回調:

before_validation(on: :create) do 
    self.start_date = start_date + 4.hours if attribute_present?("start_date") 
end 

然後,模型將無法保存,因爲重複的關鍵。

不知道你的模型是如何構建的,而只是一個想法。

+0

或者只是嘗試保存記錄並捕獲任何重複鍵異常。如果查找失敗,那將是數據庫中的一次命中,而不是查找,然後是插入。 –