Teraz, z tego, co wiem, zostanie wywołana after_validation
, nawet jeśli model nie przejdzie walidacji. Czy istnieje sposób na wywołanie go tylko wtedy, gdy model jest ważny? Próbowałem dodać return false unless self.valid?
w metodzie after_validation
, ale to ponownie uruchamia sprawdzanie poprawności i tworzy nieskończoną pętlę.Ruby on Rails - after_validation, jeśli jest poprawna?
Odpowiedz
niewydolnego walidacji dodać do błędów na płycie, więc może po prostu sprawdzić:
return false unless self.errors.empty?
Próbowałem już wcześniej i nadal nie udało się. Następnie sprawdziłem kod i zauważyłem, że ponownie sprawdzam poprawność (kiedy nie powinienem). Teraz działa idealnie. Dziękuję Ci! –
Czy myślałeś o użyciu callback before_save?
Sądzę, że będą one wywoływane tylko wtedy, gdy obiekt jest ważny.
Co, jeśli nie chcę tego zapisać? Po prostu chcesz to sprawdzić? –
Nie można również robić bardziej zaawansowanych rzeczy w 'before_save', jak sprawdzanie, które pola zostały zmienione w asocjacji (przez' xxx_changed? '), Ponieważ asocjacje są najpierw aktualizowane, w ten sposób resetując' zmieniony 'hash. Jako takie, konieczne jest wykonanie tych sprawdzeń w 'after_validation' jako obejście. –
wiem, że to jest stare pytanie, ale wpadłem na ten sam błąd przy użyciu walidacji niestandardowej na modelu Stworzyłem. Patrząc na docs jest część obejmująca niestandardowe metody i stwierdza, że takie walidacje są wywoływane za każdym razem metodą .valid?
. Prawdopodobnie dlatego uruchomiono pętlę nieskończoną, gdy wywołano wywołanie zwrotne :after_validation
.
- 1. Ruby on Rails on IIS?
- 2. Ruby vs. Ruby On Rails
- 3. Przełącznik Ruby on Rails
- 4. Docsplit Ruby on Rails
- 5. Ruby on Rails kontra Python
- 6. Ruby on Rails Private Methods?
- 7. Ruby on Rails before_filter vs initialized ruby
- 8. Ruby on Rails coffeescript braku
- 9. Antypatterns z Ruby on Rails
- 10. Stowarzyszenie polimorficzne Ruby on Rails
- 11. Ruby on Rails: wybierz formularz
- 12. Ruby on Rails 301 przekierowanie
- 13. Ruby on rails i Node.js
- 14. Ruby on Rails I18n interpolation
- 15. Monit Ruby on Rails Sidekiq
- 16. Narzędzia raportowania Ruby on Rails?
- 17. Ruby on Rails: Wyszukiwanie zaawansowane
- 18. Ruby on Rails wysyłania SMS
- 19. Ruby on Rails link_to obrazu
- 20. Zwijanie na Ruby on Rails
- 21. Pakiety Ruby on Rails downgrade
- 22. Ruby on Rails javascript_include_tag: domyślnie
- 23. Ruby on Rails vs. Django
- 24. Ruby on Rails: menu rozwijane
- 25. RVM Ruby on Rails instalacja
- 26. Ruby on Rails. Unicode routes
- 27. Konwersja projektu Ruby on Rails do projektu JRuby on Rails
- 28. JRuby on Rails vs. Ruby on Rails, co za różnica?
- 29. Ruby on Rails: errors.add_to_base vs. errors.add
- 30. Ruby on Rails 3.1 Blog Engines
Cóż, możesz sprawdzić "błędy", np. "Return false until self.errors.empty?" Lub "return false if errors.any?". – tbuehlmann