Hat Rails einen Validator wie validates_numericality_of
für Boolean oder muss ich meinen eigenen rollen?
ruby-on-rails
validation
aarona
quelle
quelle
validates :field, inclusion: [true, false]
validates :field, presence: true
für ein boolesches Feld nicht die übliche Validierung für das Vorhandensein ( ) haben können (das Feld wäre für einenfalse
Wert nicht gültig ). In beiden Schienen 3 und 4validates :field, inclusion: [true, false]
würde jedoch geprüft, ob sie in eine Werteliste aufgenommen wurden, mit dem Nebeneffekt, dass das Feld vorhanden ist (es sei denn, einer dieser Werte istnil
natürlich).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Ich glaube, für ein boolesches Feld müssen Sie etwas tun wie:
Aus einer älteren Version der API : "Dies liegt an der Art und Weise, wie Object # blank? Mit booleschen Werten umgeht. False.blank? # => True"
Ich bin mir nicht sicher, ob dies für Rails 3 noch in Ordnung ist, hoffe, das hat geholfen!
quelle
true
.Wenn ich das anwende, bekomme ich:
Warnung von sollte-Matchern:
Sie verwenden
validate_inclusion_of
, um zu behaupten, dass eine boolesche Spalte boolesche Werte zulässt und nicht boolesche Werte nicht zulässt. Beachten Sie, dass dies nicht vollständig getestet werden kann, da boolesche Spalten nicht-boolesche Werte automatisch in boolesche Werte konvertieren. Daher sollten Sie diesen Test entfernen.quelle
Sie können die kürzere Version verwenden:
Zusätzlicher Gedanke. Beim Umgang mit Aufzählungen verwende ich auch gerne eine Konstante:
quelle
Antwort gemäß Rails Docs 5.2.3
Dieser Helfer (Anwesenheit) überprüft, ob die angegebenen Attribute nicht leer sind. Es benutzt das Leerzeichen? Methode zum Überprüfen, ob der Wert entweder null oder eine leere Zeichenfolge ist, dh eine Zeichenfolge, die entweder leer ist oder aus Leerzeichen besteht.
Da false.blank? Wenn Sie das Vorhandensein eines booleschen Felds überprüfen möchten, sollten Sie eine der folgenden Überprüfungen verwenden:
quelle