2010-05-11 46 views
0

我最近試圖在一些模型邏輯中添加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社區是複雜的邏輯底線,即使在邏輯跨越多個車型,必須是在一個特定的模型驗證方法?如果驗證完全複雜並且可以跨越多個模型,它是如何處理的?

回答

0

我不明白爲什麼它沒有意義的,把它放到驗證。當然,你想要做的事情應該放在模型中,所以你必須把它放在模型中的某種方法中。然後只需添加:

validate :my_method 

就是這樣。當然,如果my_method變得太複雜,那麼將它分成一些邏輯子方法。

如果你有許多相關的對象,那麼你應該把屬於那個對象的所有驗證放在那個對象模型中,當你試圖保存「父對象」對象時,「子對象」也將通過它們的驗證進行驗證。

相關問題