Schienen bedingte Validierung im Modell
Ich habe eine Rails-3.2.18 app, wo ich versuche zu tun, einige bedingte Validierung eines Modells.
In der call-Modell gibt es zwei Felder :location_id (das ist ein Verein, der auf eine Liste von vorgegebenen Standorten) und :location_other (das ist ein text Feld wo könnte jemand geben Sie in eine Zeichenfolge oder in diesem Fall eine Adresse).
Was ich im Stande sein will zu tun, ist mit Validierungen beim anlegen einen Aufruf, in dem entweder die :location_id oder :location_other überprüft wird, anwesend zu sein.
Habe ich gelesen, der durch die Schienen Validierungen guide und bin ein wenig verwirrt. Hatte gehofft, jemand könnte etwas Licht auf, wie Sie dies leicht tun mit einer bedingten.
if
und unless
Optionen der valdates Makros? Oder ist es über, wie man überprüfen nur auf bestimmte Modell-Parametern beim speichern ein Modell von einigen controller-Aktionen (und nicht andere)?Sorry für die Verwirrung. Ich versuche, herauszufinden, wie man verwenden, wenn und es sei denn, beim anlegen/speichern eines Datensatzes. Das Endziel ist es, zu überprüfen, dass entweder die :location_id oder :location_other wird beim erstellen/speichern eines Datensatzes. Ich bin mir nur nicht sicher, wie es zu tun.
InformationsquelleAutor nulltek | 2014-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, das ist das, was du suchst:
location_id_or_other
ist eine benutzerdefinierte Gültigkeitsprüfung-Methode, die prüft, oblocation_id
undlocation_other
sind leer. Wenn Sie beide sind, dann bringt es einen Fehler bei der überprüfung. Wenn das Vorhandensein vonlocation_id
undlocation_other
ist ein exklusiv-oder -, d.h. nur einer der beiden anwesend sein können, nicht entweder, und nicht beide, dann machen Sie die folgende änderung an derif
- block in der Methode.Alternative Lösung
Diese Lösung (nur dann) funktioniert, wenn die Anwesenheit von
location_id
undlocation_other
ist ein exklusives oder.Check-out die Schienen Validation Guide für weitere Informationen.
Kein problem! Und überprüfen Sie die Rails Validierung Guide (die ich auch mit in meine aktualisierte Antwort) für weitere Informationen über Validierungen.
Danke! Das ist, was ich gelesen habe, ging off, als ich angefangen habe zu schreiben etwas ähnliches. Aber nochmals vielen Dank für das treten so schnell und kommen mit einer einfachen Antwort. Sehr geschätzt wird.
InformationsquelleAutor Joe Kennedy