ich erstellt eine benutzerdefinierte Validierung bin versucht, dass ein Zeitplan für das Startdatum und Enddatum prüft nicht mit einem anderen Zeitplan überlapptRails 3 Benutzerdefinierte Validierung
class Schedule < ActiveRecord::Base
#has many scheduleTimes (fk in scheduleTime)
has_many :scheduletimes, :inverse_of => :schedule
validate :dateOverlaps?
scope :active, lambda {
where('? between start_date and end_date', Date.today)
}
def dateOverlaps?
results = ActiveRecord::Base.connection.execute("Select (start_date::DATE, end_date::DATE) OVERLAPS ('#{self.start_date}'::DATE, '#{self.end_date}'::DATE) from schedules;")
errors.add_to_base("Date ranges cannot overlap with another schedule") if results.first["overlaps"] == 't'
end
verursacht jedoch dieses
NoMethodError: undefined method `add_to_base'
Ich habe versucht, Erstellen eines benutzerdefinierten Validators und Verwenden der privaten Validierungsmethode ohne Erfolg. Könnte mir jemand etwas Licht dazu bringen?
Nur ein kurzer Kommentar, Ihre Methode respektiert Rubys Konvention nicht. "dateOverlaps" sollte "date_overlaps" heißen. – jhchabran