Piszę niestandardowy walidator w ActiveRecord tak że termin sens:szyn: Members Date większa od drugiej
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
To jednak generuje „NoMethodError: Metoda niezdefiniowana`>”do zera: NilClass ". Wydarzenie próbowało zmienić daty w ciągi znaków, na przykład:
def deadline_is_possible?
if deadline.to_s > begins_at.to_s
errors.add(:deadline, 'must be possible')
end
end
i chociaż nie generuje błędu, nie działa.
oświadczyłem również inne weryfikatorów (jak
def begins_at_is_date?
if !begins_at.is_a?(Date)
errors.add(:begins_at, 'must be a date')
end
end
że działa OK.
Eliminuje to błąd, ale to nie działa zgodnie z oczekiwaniami: '@ event.deadline = @ event.begins_at + 1.day;' '@event.should_not be_valid' powraca ważny. .. Czy powinienem wybrać bardziej konkretny klejnot do wykonania pracy? – piffy
poprawiam się: powyższy kod działa, natomiast to nie: '@ event.deadline = @ event.begins_at;' '@event.should be_valid' zyski nie ważne ... – piffy
To może być wprowadzające w błąd ... czy wypróbowałbyś '@ event.deadline = @ event.begins_at; @ event.should mieć (0) .errors_on (: deadline) ' –