我最近試圖在一些模型邏輯中添加errors.add_to_base代碼,並想知道爲什麼它沒有出現在我認爲正在迭代所有錯誤的視圖中。然後我碰到了這個電子郵件,它解釋了爲什麼:http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/e045ec1dead1ff06?pli=1Rails 2.3.5:如果在驗證中沒有意義,如何添加錯誤?
問題是,如果add_to_base沒有意義將它們放入驗證方法,那麼如何添加錯誤?我有一些複雜的邏輯。該模型需要與has_many關係進行交流,該關係具有自己的關係,可以通過無數的條件來確定請求是否有意義。沒有什麼可以輕鬆綁定到驗證方法。
我可以做的一件事是創建一個實例變量並將所有錯誤作爲字符串傳遞給它,同時遍歷我的複雜邏輯。之後,我可以運行陣列驗證並將這些錯誤推送到基礎對象。看起來有點跛腳,而不是Rails的做事方式。
是在Rails社區是複雜的邏輯底線,即使在邏輯跨越多個車型,必須是在一個特定的模型驗證方法?如果驗證完全複雜並且可以跨越多個模型,它是如何處理的?