現在,據我所知,即使模型未通過驗證,也會調用after_validation
。有沒有辦法只在模型有效時才調用它?我嘗試在after_validation
方法中添加return false unless self.valid?
,但它再次觸發驗證,並創建一個無限循環。Ruby on Rails - after_validation如果有效?
回答
的失敗驗證,添加到該記錄中的錯誤,所以你可以只檢查:
return false unless self.errors.empty?
我以前曾嘗試過,但仍然失敗。然後我檢查了代碼,我發現我再次調用驗證(當我不應該)時。現在它運作完美。謝謝! –
你有沒有想過使用before_save回調呢?
我相信只有在對象有效時纔會調用它。
如果我不想保存它,該怎麼辦?只想驗證它? –
你也不能在'before_save'中做更高級的事情,就像檢查一個關聯中改變了哪些字段(通過'xxx_changed?'),因爲關聯首先被更新,從而重置'changed'哈希值。因此,有必要在'after_validation'中執行這些檢查作爲解決方法。 –
我知道這是一個老問題,但我在模型中使用自定義驗證時,碰到了同樣的錯誤我創造了。查看docs有一個覆蓋自定義方法的部分,它聲明每次使用.valid?
方法時都會調用這種驗證。這可能是爲什麼當觸發:after_validation
回調時觸發無限循環。
- 1. Ruby on Rails協會沒有生效
- 2. find_by_sql Ruby on Rails 3沒有結果
- 3. 大結果Ruby on Rails
- 4. 過濾結果 - Ruby on Rails
- 5. Ruby和Rails或Ruby on Rails
- 6. Ruby on Rails驗證 - 如果模型無效,那麼?
- 7. 如何在Ruby On Rails上模擬stackoverflow中的效果?
- 8. Ruby on Rails否則如果問題
- 9. Ruby on Rails的:如果可能的話
- 10. 添加如果Ruby on Rails中brakets
- 11. 如果可以?在Ruby on Rails的
- 12. CMS on Ruby on Rails
- 13. Ruby on Rails Secrets.yml
- 14. Ruby on Rails - Facebook
- 15. Ruby與Ruby On Rails
- 16. Ruby on rails hosting
- 17. Ruby on rails console
- 18. 有效記錄。 on Rails的
- 19. Ruby on Rails&Javascript
- 20. Ruby on Rails - ApplicationController
- 21. Ruby on Rails,Resque
- 22. Ruby on Rails UrlGenerationError
- 23. Ruby on Rails - redirect_to
- 24. LocalJumpError(Ruby on Rails)
- 25. ruby on rails form_for
- 26. Ruby on Rails fullcalendar-rails
- 27. Ruby on Rails標籤
- 28. Ruby on Rails Switch
- 29. Ruby on Rails + Devise
- 30. Ruby on Rails - Sqlite3
那麼,你可以檢查'錯誤',比如'返回false,除非self.errors.empty?'或'返回false如果errors.any?'。 – tbuehlmann