2012-04-03 14 views
3

Ich bin ein Code wie folgt ausgeführt werden:Vergleich Datum mit Null fehlgeschlagen - Rubin

if valid_from > Date.today 

und wenn ich dieses laufen lasse, erhalte ich einen Fehler

Vergleich von Date Spruch mit null

gescheitert

Ich nehme an, es passiert, weil in einigen Fällen valid_fromnil ist. Gibt es eine Möglichkeit, diesen Fehler zu vermeiden?

+0

Was wollen Sie den Zustand zurückzukehren, wenn 'valid_from' ist' nil'? Willst du "wahr" oder "falsch"? – sawa

Antwort

3

Sie könnten tun:

if valid_from and valid_from > Date.today 
    ... 
end 

die Kurzschluss auf der ersten Klausel, weil valid_from Null und somit falsch ist.

1

wäre eine weitere Option sowohl

if valid_from.to_i > Date.today.to_i 

(nil wandelt auf 0 und ist nie größer als das aktuelle Datum)

Der Vorteil in Integer zu konvertieren ist, dass es kürzer ist und braucht nicht eine Behandlung für den zusätzlichen Fall. Nachteil: nicht in der Epoche zweiten Start (für viele Szenarien vernachlässigbaren sein kann)

1

ich sie auf diese Weise gerne tun: valid_from && valid_from > Date.today