Действительно странно, но я сделал пользовательскую проверку в моей модели. При запуске нескольких проверок форма не сохраняется, и ошибка пользовательской проверки отображается в форме.
Однако ....
Когда пользовательская проверка является единственной проверкой, которая инициируется,форма сохраняет вкл. недействительные данные?
модель extra_guest
validate :no_dates_overlap
def no_dates_overlap
ranges = [] # cache proccessed date ranges
# iterate over all extra_guest_prices
extra_guest_prices.each do |egp|
if ranges.any? { |rng| rng.include?(egp.start_date) || rng.include?(egp.end_date) }
# if a previous range includes this dates, add the error and break the loop
egp.errors.add(:start_date, "Dates overlap")
break
else
# else, cache it and check the next
ranges << (egp.start_date..egp.end_date)
end
end
end
end