Validiert mit: if

8

Ich versuche, eine Bedingung zu erstellen, in der das Attribut "eins" null ist und das Attribut "zwei" eins ist, dann ist ein Modell nicht gültig. Aber wenn ich mache:

%Vor%

Der Komponententest gibt true zurück! Warum?

%Vor%     
James 16.12.2011, 12:06
quelle

4 Antworten

12

Ich denke, Sie haben einen Fehler in Ihrer Syntax:

%Vor%

Da war einer: wenn zu viele drin sind ... Und wenn ich richtig verstehe, willst du es nur im Fall one == 0 && two == 1 validieren lassen? Dann konditionierst du? ist invertiert (lassen Sie die! ()) weg

Wenn Sie sich nicht sicher sind, können Sie versuchen, pey zu verwenden und einen Haltepunkt in Ihre condition_testing? -Methode einzufügen, um zu sehen, was passiert.

(Bitte beachten Sie ":" vor der Zustandsprüfung)

    
Tigraine 16.12.2011 12:10
quelle
8

Sie können es in einer Zeile validieren:

%Vor%     
potashin 30.04.2015 23:30
quelle
4

Es ist besser, mit numericity zu arbeiten und gleich.

%Vor%

Ссылка

    
psulightning 29.08.2012 12:45
quelle
3

Das Problem besteht darin, dass Sie einen Anwesenheitsvalidierer mit einer Bedingung verwenden, die die Werte der Attribute überprüft. Das ist falsch. Ein Präsenzvalidierer überprüft, ob diese Attribute festgelegt sind. Was noch schlimmer ist, Sie geben die if -Option weiter (@Tigraine war übrigens richtig, dass Ihre Syntax falsch ist), was bedeutet, dass die Anwesenheit überhaupt nicht überprüft wird, wenn diese Methode den Wert true zurückgibt. Wie Sie dies eingerichtet haben, wird der Validator nur ausgeführt, wenn one gleich 1 und two gleich 0 ist. Andernfalls werden überhaupt keine Validierungen ausgeführt! Ich denke, die beste Option ist hier, eine benutzerdefinierte Validierung zu schreiben:

%Vor%

Dies fügt dem Modell mit der angegebenen Nachricht einen Fehler hinzu, wenn die Bedingung wahr zurückgibt. (Hinweis: Ich weiß immer noch nicht, welche Bedingung gültig und welche ungültig ist. Sie können also den letzten Teil nach Ihren Bedürfnissen ändern.)

    
Logan Leger 16.12.2011 16:04
quelle