Ho una raccolta di oggetti ActiveRecord. Voglio essere in grado di eseguire tutte le convalide per ciascuno di questi oggetti senza salvarli effettivamente nel database. Voglio solo sapere se sarebbero validi se li avessi salvati nel database. In altre parole, in sostanza voglio popolare la struttura dati errors
per ciascuno dei miei oggetti. C'è un modo per fare questo? O forse mi manca qualcosa sul ciclo di vita della collezione errors
?Esecuzione convalida di ActiveRecord senza salvare
10
A
risposta
23
È possibile effettuare le seguenti operazioni per verificare se un modello è valido:
@user = User.new
if @user.valid?
#do things
Se volete vedere che cosa gli errori sono, si può fare:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
Chiamando il ".valido?" metodo esegue le convalide, inserendo tutti i tuoi errori in un oggetto ActiveRecord :: Errors, a cui puoi accedere come ho fatto nell'esempio sopra. Prova gli esempi nella Console per farti un'idea se lo desideri.
2
L'esecuzione del metodo #valid?
sull'oggetto eseguirà tutte le convalide e popolerà la struttura errors
.
dude = Person.new
unless dude.valid?
# Examine errors
end
Problemi correlati
- 1. Convalida in mangusta senza salvare
- 2. Convalida ActiveRecord: univocità sull'associazione
- 3. Ricevi messaggi di errore di convalida senza salvare
- 4. caricamento di file senza activerecord
- 5. ActiveRecord - sostituire l'errore di convalida del modello con avviso
- 6. Convalida inline prima di salvare il modello
- 7. Imagecrop senza salvare l'immagine
- 8. Convalida ActiveRecord delle rotaie: lunghezza massima di una stringa?
- 9. Rails ActiveRecord convalida regex di campi non obbligatori
- 10. Come salvare qualcosa nel database dopo le convalide di ActiveRecord fallite?
- 11. Rails 3 Convalida ActiveRecord basata sulle autorizzazioni utente
- 12. base64 codifica un'immagine senza salvare
- 13. ActiveRecord Convalida Unicità con portata Consentire Nil sul Ambito
- 14. Convalida xsd Java di xml senza namespace
- 15. Plugin di convalida della data senza calendario
- 16. Rails che ottiene errore di convalida non riuscito, ma nessun errore nel modello di errore ActiveRecord
- 17. Caricamento di dispositivi ActiveRecord con RSpec senza Rails
- 18. Convalida i campi usando la convalida JQuery senza alcun invio?
- 19. Eclipse: il risparmio senza azioni salvare
- 20. Salvare i file usando Paperclip senza upload
- 21. Backbone.js: stage nuovo modello senza salvare
- 22. Asp.Net Identità salvare utente senza email
- 23. Metodo di esecuzione Relaycommand e senza parametro
- 24. Richiedi file senza codice di esecuzione?
- 25. Esecuzione di ASP.NET senza viewstate attivato
- 26. Esecuzione di test VSTS senza mstest.exe
- 27. Rimozione o sovrascrittura di una convalida di ActiveRecord aggiunta da una superclasse o mixin
- 28. Convalida Jquery: chiama valido senza visualizzare errori?
- 29. Convalida in Rails senza un modello
- 30. Delphi: convalida e-mail senza espressioni regolari
Lungo le linee simili, sto cercando di visualizzare un collegamento di pubblicazione basato sul record valido per la pubblicazione o meno. Nelle mie convalide, sto usando validati: se il formato. C'è un modo semplice per cambiare l'attributo per dire: true e quindi verificare se è valido per la pubblicazione? Ad es. post = Post.nuovo (: titolo => "titolo",: pubblicato => falso) post.published = true se post.valid? post.published = false – chetu