[英]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.