Ich habe eine Sammlung von ActiveRecord-Objekten. Ich möchte in der Lage sein, alle Validierungen für jedes dieser Objekte auszuführen, ohne sie tatsächlich in der Datenbank zu speichern. Ich möchte nur wissen, ob sie gültig wären, wenn ich sie in der Datenbank speichern würde. Mit anderen Worten, ich möchte im Wesentlichen die errors
Datenstruktur für jedes meiner Objekte bevölkern. Gibt es eine Möglichkeit, dies zu tun? Oder vielleicht fehlt mir etwas über den Lebenszyklus der errors
Kollektion?Ausführen von ActiveRecord-Validierungen ohne Speichern
10
A
Antwort
23
Sie können Folgendes überprüfen tun, wenn ein Modell gültig ist:
@user = User.new
if @user.valid?
#do things
Wenn Sie sehen wollen, was die Fehler sind, können Sie tun:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
der Aufruf ".gültig?" Die Methode führt Ihre Validierungen aus und fügt alle Ihre Fehler in ein ActiveRecord :: Errors-Objekt ein, auf das wie im obigen Beispiel zugegriffen werden kann. Geben Sie den Beispielen einen Versuch in der Konsole, um ein Gefühl dafür zu bekommen, wenn Sie möchten.
2
Durch Ausführen der #valid?
-Methode für das Objekt werden alle Validierungen ausgeführt und die Struktur errors
ausgefüllt.
dude = Person.new
unless dude.valid?
# Examine errors
end
Verwandte Themen
- 1. Ausführen von Redux-Thunk-Aktion ohne Versand
- 2. PHP - Speichern von Funktionen zum späteren Ausführen
- 3. Eclipse-: ohne Aktionen speichern Speichern
- 4. JavaScript ohne Browser ausführen?
- 5. Ausführen von Shell-Befehlen ohne Shell-Fenster
- 6. Ausführen von OpenMPI-Programm ohne mpirun
- 7. Ausführen von Sidekiq-Mitarbeitern ohne Datenbankverbindung
- 8. Ausführen von Visual Studio ohne Administratorrechte
- 9. Ausführen von VSTS-Tests ohne mstest.exe
- 10. Ausführen von Code ohne Block Haupt-Thread
- 11. Ausführen von QFileDialog :: getOpenFileName ohne separate Ereignisschleife?
- 12. PyQt: Ausführen von pyuic.py ohne Befehlszeile
- 13. Ausführen von Mstest.exe ohne Team Foundation Server.
- 14. Ausführen von JavaScript mit Python ohne X
- 15. Aktion ohne Weiterleitung ausführen
- 16. Befehl ausführen ohne sudo
- 17. Öffnen/Ausführen Macro/Speichern & Schließen
- 18. VIM: Speichern und gleichzeitig ausführen?
- 19. MongoDB - Speichern von Datum ohne Zeitzone
- 20. J2ME Speichern von 1500 Kontaktinformationen ohne Datenbank
- 21. Repository ohne ORM zum Speichern von Objektgraphen
- 22. Verwenden von acts_as_state_machine Übergangsmethoden ohne Speichern
- 23. Eclipse-Workspace speichern, ohne
- 24. Ausführen von UI-Automatisierungstests mit Gradle ohne Deinstallation
- 25. PHP Define Function ohne Ausführen
- 26. Run Powershell ohne "Skript ausführen"
- 27. TouchableOpacity ausführen, ohne zu berühren
- 28. Ohne Debugging in Eclipse ausführen
- 29. Warum funktioniert das? Ausführen von Verfahren von IL ohne Beispiel
- 30. Grails - wie Code vor jedem Speichern ausführen?
Entlang der ähnlichen Zeilen, ich versuche, eine Veröffentlichung Link basierend auf dem Datensatz ist gültig für die Veröffentlichung oder nicht anzuzeigen. In meinen Validierungen verwende ich validates: wenn format. Gibt es eine einfache Möglichkeit, das Attribut zu ändern, um "True" zu sagen und dann zu überprüfen, ob es für die Veröffentlichung gültig ist? Für z.B. post = Post.new (: titel => "titel",: veröffentlicht => falsch) post.published = true wenn post.valid? post.published = false – chetu