У меня есть приложение, которое включает в себя записи отсутствия сотрудников.Rails проверяет уникальность диапазонов дат
Мне нужно, чтобы начальная и конечная даты для каждой записи не пересекались.
Так, например, если я ввел запись об отсутствии, которая началась сегодня и закончилась завтра, не должно быть возможности ввести другую внутри этого диапазона дат любым способом. Поэтому я не мог сделать тот, который начинается накануне сегодня, а затем заканчивается послезавтра или позже.
Проще говоря, мне нужно сделать уникальный диапазон дат.
Каков наилучший способ достичь этого?
Пользовательские валидаторы в классе модели, которые связаны с итерированием по всем записям, занимают слишком много времени, и я не нашел камней, которые решают эту проблему. Я также не нашел простого способа охвата по уникальности в модели. Я в тупике:/
Спасибо за ваше время!
Edit:
class Absence < ActiveRecord::Base
attr_accessible :date, :date_ended, :status, :reason, :form, :user_id, :tempuser, :company_id
belongs_to :user
default_scope { where(company_id: Company.current_id) }
validates :date, :date_ended, :status, :reason, :form, :user_id, presence: true
validates_numericality_of :user_id, :only_integer => true, :message => "can only be whole number."
end
Возможно, создав модель для записи использованных дат? Что-то вроде EmployeeAbsenceDate. Это будет быстрее, чем повторение всех записей. – Edward