Estoy escribiendo un validador personalizado en ActiveRecord por lo que el plazo tiene sentido:Rieles: Validación de una fecha mayor que otro
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
Sin embargo, esto genera un "NoMethodError: método no definido`>' para nada: NilClass ". Me evento trató de convertir las fechas en cadenas, como:
def deadline_is_possible?
if deadline.to_s > begins_at.to_s
errors.add(:deadline, 'must be possible')
end
end
y aunque no genera un error, no funciona bien.
También declararon otros validadores (como
def begins_at_is_date?
if !begins_at.is_a?(Date)
errors.add(:begins_at, 'must be a date')
end
end
que funciona bien.
Esto elimina el error, sin embargo, no funciona como se esperaba: '@ event.deadline = @ event.begins_at + 1.day;' '@event.should_not be_valid' vuelve válida. .. ¿Debería elegir una joya más específica para hacer el trabajo? – piffy
me corrijo: funciona el código anterior, mientras que esto no es así: '@ event.deadline = @ event.begins_at;' '@event.should be_valid' devoluciones no válida ... – piffy
Eso podría ser engañoso ... intentarías '@ event.deadline = @ event.begins_at; @ event.should have (0) .errors_on (: deadline) ' –