我是Ruby的新手,我正在完成我的项目的最后一步,当我试图添加约会时,如果医生在那个时间工作,我必须改变。我不知道该怎么做:(
这是我的数据库的工作原理:
在预约中,我有data_wizyty(visit_date),doctor_id和godzina_wizyty(visit_time) - 这是我的添加形式。
在日程表中我有: dzien_tygodnia(day_of_the_week),poczatek_pracy(start_working),koniec_pracy(end_working)和doctors_workplace_id
在doctors_workplace: doctor_id,schedule_id,clinic_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
答案 0 :(得分:1)
您可以使用自定义验证。在约会中创建一个私人方法,检查医生是否在给定的日期/时间可用。
validate :check_doctor_available
private
def check_doctor_available
#your implementation
end
如果您对自定义验证方法中的内容有任何疑问,请查看this。