我有幾個before_validation回調操作在我的模型上設置的屬性。我遇到麻煩時,我有這樣的情況:我的Rails before_validation回調應該如何處理錯誤的數據?
class Foo < ActiveRecord::Base
before_validation :capitalize_title
validates :title, :presence => true
def capitalize_title
title.upcase
end
end
我寫一個測試,以確保「零」的稱號是不允許的,但因爲nil.upcase沒有定義的測試得到一個錯誤。我想處理這個錯誤,但是我已經在before_validation回調之後運行了錯誤處理。
我不想對我所有的before_validation回調進行檢查,以確保數據存在,如果我可以避免它。
是否有一種乾淨的或可接受的方式來處理這種類型的情況?
的'captialize_title方法應該有一個檢查,正如畝建議。如果你直接從某些代碼調用該方法,並且'title'爲零 - 你會得到一個錯誤,那麼代碼就不好。 另外,你在這種情況下將檢查放在方法上,而不是在'before_validate'回調函數中 - 通過對回調進行檢查並不確定你的意思。 – Zabba