【问题标题】:Check if dates are equal and insert into database if not检查日期是否相等,如果不相等则插入数据库
【发布时间】:2013-10-10 03:37:57
【问题描述】:

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

你怎么看?谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby datetime activerecord


    【解决方案1】:

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

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

    那么模型会因为key重复而无法保存。

    不确定您的模型的结构,但只是一个想法。

    【讨论】:

    • 或者只是尝试保存记录并捕获任何重复键异常。如果查找失败,那将是对数据库的一次点击,而不是查找然后插入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多