Wenn Sie in Rails mit Active Record einen booleschen Wert verwenden und Sie (sagen wir) visible?
fragen, wird in der Spalte überprüft, ob true
ist oder nicht. Wenn es false
oder nil
ist, gibt visible?
false
zurück.
Wie skaliert man einen booleschen Wert, um zu fragen, ob die Methode ?
false zurückgeben würde? Ich habe das:
Aber ich frage mich, ob es einen saubereren Weg gibt. Gibt es eine Möglichkeit, diesen Bereich zu schreiben, ohne explizit sowohl nil
als auch false
anzugeben? Wenn wir nach dem Gegenteil streben, könnten wir einfach
das scheint sauberer zu sein. Was ist der beste Code für den sichtbaren Bereich?
Verwenden Sie einen Standardwert für die Spalte. Dies ist aus zwei Gründen sinnvoll: Sie haben nur zwei mögliche Werte in Ihrer Datenbank, was Ihren Code vereinfacht. Und Booleans sind entweder wahr oder falsch, nicht nil, nicht vielleicht, nicht foobar. Richtig und falsch. "Ich würde es eher vermeiden, die DB streng falsch / wahr zu bekommen", ist ein falsches Argument für eine boolesche Spalte.
Wenn Sie mehr als 2 Zustände benötigen, verwenden Sie eine Zustandsmaschine oder etwas ähnliches - dann ist es keine boolesche Spalte / kein boolescher Zustand mehr.
Fast so wie Stefans Antwort, ein bisschen vereinfacht:
%Vor%Es funktioniert für PostgreSQL, aber ich bin nicht sicher, ob es für andere Datenbanken funktioniert.
Ab Rails 4 können Sie dies wie folgt erreichen:
%Vor% Obwohl Tanels Antwort nicht wirklich die Frage beantwortet, welche "Was ist der beste Code für den sichtbaren Bereich?" würde ich definitiv wiederholen, was er sagte, dass eine boolesche Spalte immer sollte sei entweder true
oder false
.
Tatsächlich darf keine Datenbank eine Spalte, die als boolean
deklariert ist, als etwas anderes als true
oder false
zulassen, weil es sonst nicht wirklich boolean ist. Aber das ist eine separate Dose Würmer. :-D
Tags und Links ruby-on-rails