Ho un'applicazione che comporta record di assenza per i dipendenti.Rails convalida l'univocità degli intervalli di date
Ho bisogno di garantire che le date di inizio e di fine di ogni record non si sovrappongano.
Ad esempio, se inserissi un record di assenza iniziato oggi e terminato domani, non dovrebbe essere possibile inserire un altro all'interno di tale intervallo di date in alcun modo. Quindi non ho potuto crearne uno che inizi il giorno prima di oggi, per poi terminare dopodomani o in una data successiva.
Per dirla in parole semplici, ho bisogno di rendere unico l'intervallo di date.
Qual è il modo migliore per raggiungere questo obiettivo?
I validatori personalizzati nella classe del modello che coinvolgono l'iterazione di tutti i record impiegano troppo tempo per essere completati e non ho trovato gemme che risolvono questo problema. Nemmeno io ho trovato alcun modo semplice di dare uno sguardo all'unicità nel modello. Sono perplesso:/
Grazie per il vostro tempo!
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
Forse creando un modello per registrare le date utilizzate? Qualcosa come EmployeeAbsenceDate. Questo sarebbe più veloce di iterare su tutti i record. – Edward