2013-02-11 14 views
13

Wywołanie zwrotne after_validation jest wyzwalane przed before_save. Co dzieje się między tymi wywołaniami, jeśli w ogóle? Dlaczego ktoś wybrałby jeden nad drugim?Co dzieje się między after_validation a before_save?

+2

'after_validation' zostanie wywołana jeśli zadzwonisz' '#valid więc nie mogą być przypadki, gdy chcemy tylko sprawdzić poprawność zapisu, ale nadal prowadzą coś po zatwierdzeniu. Z mojego doświadczenia nigdy nie miałem okazji użyć 'after_validation'. – jvnill

+2

Oprócz tego, co powiedział jvnill, obiekt nie jest zapisywany, jeśli nie jest prawidłowy. Dlatego wywołanie zapisu na niepoprawnym obiekcie nie wywoła wywołania zwrotnego 'before_save', natomiast wywoła ono' after_validation'. – Max

Odpowiedz

12

Istnieje after_validation_on_update lubzależnie od tego, czy jest to nowy rekord.

I jak Max stwierdza, łańcuch jest przerywany, zanim osiągnie zwrotną wartość before_save, jeśli obiekt nie jest prawidłowy, więc jeśli potrzebujesz czegoś, co się pojawi, niezależnie od ważności obiektu before_save nie jest to miejsce dla niego.

Dla porównania: http://apidock.com/rails/ActiveRecord/Callbacks/after_validation_on_create

Powiązane problemy