繁体   English   中英

添加到数据库时的Ruby验证

[英]Ruby Validation When Adding to Database

我真的是Ruby的新手,我正在完成项目的最后一步,当我尝试添加约会时,如果那段时间我要去工作,我必须进行更改。 我不知道该怎么做:(

这是我的数据库的工作方式:

在约会中,我有data_wizyty(visit_date),doctor_id和godzina_wizyty(visit_time)-以我的添加形式。

在日程表中,我有:dzien_tygodnia(星期几),poczatek_pracy(开始工作),koniec_pracy(结束工作)和doctors_workplace_id

在doctors_workplace中:doctor_id,schedule_id,climate_id

我想检查在选定的日期和时间是否可以在任何一家诊所找到医生:)请帮助我:)我已经通过以下方式验证了日期和时间是否唯一:

class Appointment < ActiveRecord::Base
    validates :doctor_id, uniqueness: { scope: [:data_wizyty, :godzina_wizyty], message: 'Ten termin jest juz zajety!' }
end

我需要检查它是否唯一以及医生是否可以工作。

约定:

class Appointment < ActiveRecord::Base
    validates :doctor_id, uniqueness: { scope: [:data_wizyty, :godzina_wizyty], message: 'Ten termin jest juz zajety!' }
    after_initialize :aInit
    after_save :aSave

    belongs_to :patient
    belongs_to :doctor
    belongs_to :schedule
    belongs_to :refferal
    belongs_to :clinic

    has_many :employees

    include MultiStepModel

    def self.total_steps
        3
    end

    def aInit 
        @wymaga_Potwierdzenia = true 
    end

    def aSave
        if self.refferal_id == nil
            @potwierdzona = false
        else
            @potwierdzona = true
        end
        if self.wymaga_Potwierdzenia == false
            @potwierdzona = true
        end
    end

end

时间表:

class Schedule < ActiveRecord::Base

    has_many :appointments
    belongs_to :clinic
    belongs_to :doctors_workplace

    def full_schedule
        "#{dzien_tygodnia} : #{poczatek_pracy} - #{koniec_pracy}"
    end

end

Doctors_workplace:

class DoctorsWorkplace < ActiveRecord::Base

has_many :schedules
belongs_to :doctor
belongs_to :clinic_surgery

end

现在我有这样的事情:

def check_doctor_available
        if Schedule.where(doctor: doctor, dzien_tygodnia: data_wizyty.wday)
               .where('poczatek_pracy < ? and koniec_pracy > ?', godzina_wizyty, godzina_wizyty).empty?
      self.errors.add(:doctor, message: 'nie pracuje w tym terminie!')
    end

这就是我现在所拥有的:

def check_doctor_available
        if DoctorsWorkplace.where(doctor_id: doctor_id) and
           Schedule.where(doctors_workplace_id: ????, dzien_tygodnia: data_wizyty.wday)
               .where('poczatek_pracy < ? and koniec_pracy > ?', godzina_wizyty, godzina_wizyty).empty?
      self.errors.add(:doctor, message: 'nie pracuje w tym terminie!')
    end

您可以使用自定义验证。 在约会中创建一个私人方法,以检查在给定的日期/时间是否有医生可用。

validate :check_doctor_available

private
def check_doctor_available
  #your implementation
end

看看这个 ,如果你有任何疑问,如何在自定义的验证方法写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM