Tworzenie aplikacji rezerwacji. Jak mogę sprawdzić, czy zatwierdzić datę przykład date_start
i date_end
ma wartośćIdentyfikacja konfliktów dat na tworzenie w szynach
date_start date_end
26-11-2017 27-11-2017
będę tworzyć kolejną rezerwację, która ma te wartości rozpoczęcia i data zakończenia, ale to sprzeczne z innymi wartościami. Jak mogę sprawdzić sprzeczne daty?
date_start date_end
25-11-2017 28-11-2017
Używane to do sprawdzania poprawności daty w między
model
validate :no_reservation_overlap
scope :overlapping, ->(period_start, period_end) do
where "((date_start <= ?) and (date_end >= ?))", period_end, period_start
end
private
def no_reservation_overlap
if (Reservation.overlapping(date_start, date_end).any?)
errors.add(:date_end, 'it overlaps another reservation')
end
end
View - Wybierając datę
<%= f.label :'date_start:' %>
<%= f.date_field :date_start %>
<%= f.label :'date_end:' %>
<%= f.date_field :date_end %>
Próbka pochodzi od 26 do 27 są już zarezerwowane/zastrzeżone rzekomo musi uniemożliwić wstawienie 25 do 28, ponieważ 26 do 27 są już zarezerwowane.
Na czym polega problem w twoim kodzie? – Imran
@Imran Chcę móc dodać sprawdzanie poprawności w celu sprawdzenia konfliktów między powyższymi datami. Przykładowe daty od 26 do 27 są już zarezerwowane/zarezerwowane, podobno aplikacja musi zapobiegać wstawianiu od 25 do 28, ponieważ 26 do 27 jest już zarezerwowanych. – Pat
Jaką bazę danych używasz (jeśli potrzebujesz rozwiązania opartego na języku SQL)? –