2012-07-03 10 views
5

In entrambi Rails 2 e Rails 3, se: salvataggio automatico => true un'associazione has_many, la collezione è in loop attraverso e salvare (: validare => false) viene chiamato su ogni associazione infantile. Perché? Abbiamo bisogno di un callback before_validation da eseguire per quell'oggetto figlio, ma non lo sarà dato che si tratta di un salvataggio che salta la convalida.has_many: salvataggio automatico => true convalida salta quando si salvano i bambini

Che cosa è un buon modo per aggirare questo? E qual è lo scopo di saltare le convalide?

Qualsiasi aiuto sarebbe molto apprezzato! Grazie!

risposta

6

Validazioni do get run. C'è una fase di convalida e una fase di salvataggio. AutoSave tenta di eseguire queste due fasi per i due modelli contemporaneamente. Quindi, dopo aver salvato il modello principale, il modello principale viene convalidato e quindi il figlio salvato automaticamente viene convalidato. Dopo il passaggio delle convalide, si verifica la fase di salvataggio che salva il modello principale e salva il modello figlio (ma salta la convalida). Il motivo è perché la convalida è già stata eseguita.

stavo correndo in un problema quando stavo cercando di costruire il modello bambino dentro il genitore durante il callback before_save. Pertanto l'oggetto associato non era lì per essere convalidato durante la fase di validazione.

Problemi correlati