Bonjour,
Je crée un site de réservation. Ma table Busy contient 2 colonne : debut
et fin qui sont de type datetime.
Je souhaite créer une validation pour chaque nouvelle réservation. Or
même si l’erreur est détecté, il écrit tout de même dans la base.
De plus, si toute les réservation ne sont pas détecté :
Exemple, dans la base: du 1 décembre au 31 décembre
formulaire : 2 décembre au 3 décembre
class BusyUnique < ActiveModel::Validator
def validate(record)
if Busy.where("((date_at BETWEEN ? AND ?) OR (date_to BETWEEN ?
AND ?)) AND (id != ?)", record.debut, record.fin, record.debut,
record.fin, record.id).exists? == true
end
end
end
class Busy < ActiveRecord::Base
validates :debut, :presence => true
validates :fi, :presence => true
validates_with BusyUnique
end