检查日期是否相等,如果没有,则插入数据库

时间:2013-10-10 03:37:57

标签: ruby-on-rails ruby datetime activerecord

我需要在我的数据库中创建一个新的日期时间记录,但首先我需要找出已保存的相同日期。我的数据库中的日期增加了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
你怎么看?谢谢!

1 个答案:

答案 0 :(得分:2)

Appointment模型中,start_date可以成为关键吗?然后你可以有这个回调:

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

然后,由于重复的密钥,模型将无法保存。

不确定你的模型是如何构建的,只是一个想法。