Witam, pomógłby ktoś napisać poprawną walidację dla wymagań które podam poniżej ? Nie mam pojęcia jak robi się coś takiego, potrzebuję użyć tego tylko jeden raz więc proszę serdecznie o pomoc kogoś kto zna się na tym i pisze takie coś w sekundę:) Jeżeli chcecie napisać coś głupiego to nie piszcie nic, proszę po prostu o pomoc kogoś kto chciałby jej udzielić:)
W bazie danych mam tabelę Appointment (którą dodaję formularzem i której parametry chcę sprawdzać) z polem godzina_wizyty, data_wizyty, doctor_id.
W tabeli Schedules mam: dzien_tygodnia, poczatek_pracy, koniec_pracy oraz doctors_workplace_id.
W Doctor_Workplace: doctor_id.
Chodzi o to, że potrzebuję sprawdzić przy dodawaniu wizyty czy lekarz przyjmuje w danym terminie i o danej godzinie, jeżeli nie wyświetlić komunikat.
Mój aktualny kod (ale to naprawdę próba zrobienia czegoś z czegoś czego nie potrafi się ogarnąćw moment:D)
validate :check_doctor_available
def check_doctor_available
if DoctorsWorkplace.joins(:schedule).where(doctors_workplace.id == schedule.doctors_workplace_id)
joins(:schedule).where(dzien_tygodnia: data_wizyty.wday)
joins(:schedule).where('poczatek_pracy < ? and koniec_pracy > ?', godzina_wizyty, godzina_wizyty).empty?
self.errors.add(:doctor, message: 'nie pracuje w tym terminie!')
end
Wykorzystaj dobrze relacje które masz. Model Appointment ma relację z Doctor, ten z kolei z DoctorsWorkplace, w którym to możesz w końcu zrobić joins(:schedules) i odpytać o co tam chcesz.