In Ruby on Rails gibt es eine Szene, in der Sie eine Validierung schreiben möchten, die nur funktioniert, wenn eine bestimmte Bedingung erfüllt ist. Die Lösung hat einige Zeit in Anspruch genommen. Im Folgenden wird gezeigt, wie eine Validierung geschrieben wird, die nur funktioniert, wenn eine bestimmte Bedingung erfüllt ist.
Beschreibung der Validierung, die nur gültig ist, wenn der Wert der Spalte X des Datensatzes, den Sie registrieren möchten, a ist
Wenn im folgenden Beispiel der Wert der Spalte public_flag (Typ: Ganzzahl) in der Produkttabelle 1 ist, Dies ist ein Beispiel für die Auferlegung einer Einschränkung, dass die Spalte Produktname (Name), Produktbeschreibung (Beschreibung) und Produktpreis (Preis) der Produkttabelle nicht registriert werden kann, wenn sie leer sind.
In den folgenden Fällen ist es möglich, sich in der Produkttabelle zu registrieren, wenn der Wert von public_flag 0 ist, auch wenn die Werte für Produktname (Name), Produktbeschreibung (Beschreibung) und Produktpreis (Preis) leer sind.
model(product.rb)
with_options presence:true, if: :isProductPublicable? do |v|
v.validates :name
v.validates :description
v.validates :price
end
#public_true, wenn flag 1 ist
def isProductPublicable?
public_flag == 1
end
with_options ist eine Option, mit der Sie mehrere Validierungen gleichzeitig anwenden können. isProductPublicable? Gibt true zurück, wenn der Wert der Spalte public_flag 1 ist.
Recommended Posts