Esiste un modo per attivare la convalida solo in moduli specifici (azione del controllore), non a livello globale ad ogni salvataggio o aggiornamento? Qualcosa come la bandiera User.create(:validate=>true)
.Convalida solo in forma specifica
risposta
Sì, è possibile fornire i condizionali per le convalide, ad esempio:
validates_presence_of :something, :if => :special?
private
def make_sepcial
@special = true
end
def special?
@special
end
Ora tutto ciò che dovete fare per attivare queste convalide è:
s = SomeModel.new
s.make_special
Quindi, dopo aver salvato il modello, devo impostare speciale su false, giusto? – methyl
No. '@ special' è solo una variabile di istanza. A meno che tu non abbia ancora del lavoro da fare, puoi lasciarlo morire, non verrà mantenuto per ulteriori query sul database. – thomasfedb
Come spiegato nei commenti, vuoi saltare la convalida per i nuovi record. In tal caso, è possibile utilizzare la risposta di thomasfedb, ma non utilizzare la variabile @special
, ma:
validates_presence_of :something, :if => :persisted?
Ciò convaliderà solo per salvati User
s, ma non per i nuovi User
s. Consulta la documentazione dell'API su persisted?
.
Puoi anche usare: unless =>: persistente? se vuoi il contrario - convalida su nuovi ma non per salvati. –
Questa è la risposta corretta – doz87
Questo è un po 'vecchio. Ma ho trovato http://apidock.com/rails/Object/with_options per essere un buon modo di gestire questo tipo di comportamento.
- 1. forma Shell non convalida
- 2. Unico convalida campo in Google forma
- 3. Rileva una forma specifica utilizzando OpenCV
- 4. forma angolare - Invia solo i campi modificati
- 5. Django Formset errore di convalida gestione-forma
- 6. jQuery convalida plug-in - convalida elementi nascosti solo quando visibili
- 7. Convalida alfabetica solo stringa in JavaScript
- 8. Cascade convalida non funziona sul terzo strato di una forma
- 9. HTML menu a tendina forma specifica gamma numero
- 10. angolare convalida 2 forma, minLength validatore non funziona
- 11. convalida modulo solo caratteri alfabeto inglese
- 12. Intellij IDEA: specifica l'origine dati per la convalida JPA
- 13. Estrazione solo del css utilizzato in una pagina specifica
- 14. cambia colore intestazione colonna specifica solo in datagridview
- 15. Come aggiornare solo la cella specifica in datafaces dataTable
- 16. Convalida condizionale in AngularJS
- 17. Convalida Joi restituisce solo un messaggio di errore
- 18. Come utilizzare solo determinati set di convalida per la convalida dei dati in Cake PHP?
- 19. Come eseguire la convalida solo su submit - jQuery plug-in di convalida
- 20. convalida univoca in DDD
- 21. casella di controllo Convalida non mappata a un'entità in una forma Symfony2
- 22. three.js wireframe forma solo con bordi nascosti come linee tratteggiate
- 23. Convalida campo non-modello
- 24. come creare questo forma con solo div e css
- 25. Come aggiungere un elemento forma zend in una posizione specifica, dopo che una volta l'oggetto modulo è già stato creato?
- 26. Creazione di una forma rettangolare con solo due bordi arrotondati
- 27. È una cattiva forma fornire solo un costruttore di mosse?
- 28. Come riconoscere gli istogrammi con una forma specifica in opencv/python
- 29. Chiusura di una forma da un'altra forma?
- 30. Android Forma all'interno di una forma
Perché stai provando a farlo? Forse possiamo dare una risposta migliore se conosciamo le ragioni alla base della tua domanda. – rdvdijk
Ho un modello Utente incasinato, non separato dal profilo, quando si registra è necessario fornire solo pochi campi e il resto deve essere completato dall'azione di modifica dell'utente. – methyl
È possibile superare tutte le convalide del tipo: Model.save (false) – emrahbasman