In questo momento, da quello che so, verrà chiamato after_validation
anche se il modello non supera le convalide. C'è un modo per chiamarlo solo se il modello è valido? Ho provato ad aggiungere return false unless self.valid?
nel metodo after_validation
ma questo innesca di nuovo la convalida e crea un ciclo infinito.Ruby on Rails - after_validation se valido?
risposta
Le convalide mancanza aggiungono agli errori per il record, quindi si può solo controllare:
return false unless self.errors.empty?
Ho già provato questo e ancora non è riuscito. Poi ho controllato il codice e ho notato che stavo chiamando di nuovo la convalida (quando non dovevo). Ora funziona perfettamente. Grazie! –
Hai mai pensato di utilizzare il callback before_save?
Credo che verrà chiamato solo se l'oggetto è valido.
Cosa succede se non desidero salvarlo? Voglio solo convalidarlo? –
Non puoi anche fare cose più avanzate in 'before_save' come controllare quali campi sono cambiati in un'associazione (tramite' xxx_changed? ') Poiché le associazioni vengono aggiornate per prime, ripristinando così l'hash' cambiato '. Pertanto, è necessario eseguire questi controlli in 'after_validation' come soluzione alternativa. –
So che questa è una vecchia questione, ma mi sono imbattuto nello stesso errore quando si utilizza una convalida personalizzato su un modello L'avevo creato Guardando il docs c'è una parte che copre i metodi personalizzati e afferma che tali convalide vengono chiamate ogni volta il metodo .valid?
. Questo è probabilmente il motivo per cui il ciclo infinito è stato attivato quando è stata attivata la richiamata :after_validation
.
- 1. Curl on Ruby on Rails
- 2. Heroku on Rails - DATABASE_URL non valido
- 3. Docsplit Ruby on Rails
- 4. Intellisense per Ruby, Ruby on Rails, Python
- 5. SSL con Ruby on Rails
- 6. Ruby on Rails - Global Variable?
- 7. Ruby on Rails colonna decimale
- 8. Ruby on rails problems on heroku
- 9. Ruby on rails e Node.js
- 10. Ruby on Rails CoffeeScript mancanza
- 11. Ruby on rails tasks scheduling
- 12. Ruby on Rails redirect_to arguments
- 13. Ruby on Rails Rake Error
- 14. Ruby on Rails. Percorsi Unicode
- 15. Ruby on Rails ActiveRecord: pluralization
- 16. semplice Ruby on Rails Tutorial
- 17. Ruby on Rails, rilevamento Javascript
- 18. Esercitazione su Ruby on Rails
- 19. downgrade di Ruby on Rails
- 20. Antipattern con Ruby on Rails
- 21. Campo Ruby on Rails medio?
- 22. Busting Ruby on Rails Myths
- 23. Ruby on Rails 301 reindirizzamento
- 24. Associazione polimorfica Ruby on Rails
- 25. Ruby on Rails versus Python
- 26. RVM Ruby on Rails installazione
- 27. Monit Ruby on Rails Sidekiq
- 28. Ruby on Rails javascript_include_tag: default
- 29. Ruby on Rails Interpolazione I18n
- 30. Ambiente Ruby on Rails portatile
Bene, è possibile controllare "errori", come "return false a meno che self.errors.empty?" O "return false if errors.any?". – tbuehlmann