1
我想在將它們保存到ROR中的數據庫之前驗證一些屬性。如何驗證ActiveRecord的子子類
我的代碼如下所示:
class AbstractClass < ActiveRecord::Base
validate :field_name, :numericality => { :only_integer => true }
self.abstract_class = true
end
class OtherAbstractClass < AbstractClass
validate :other_field, :numericality => { :only_integer => true }
self.abstract_class = true
end
class ConcreteClass < OtherAbstractClass
validate :third_field, :numericality => { :only_integer => true }
end
我的問題是,只有ActiveRecord的(FIELD_NAME)驗證的直接祖先檢查......和具體類的實例,甚至沒有一個驗證?方法,當我嘗試手動調用它們時,我的對象只保存了部分驗證。
有什麼辦法可以調用ActiveRecord的所有子類的驗證方法嗎?
的問題是,只有 驗證:FIELD_NAME,:numericality => {:only_integer =>真} 被調用。我試着移動子類(ConcreteClass)中的所有驗證器,但沒有一個被調用.. – Antzi 2013-04-22 16:10:48
@Antzi,我明白了。你的語法問題是錯誤的,我只是盲目地複製它們。分號不應該跟隨'validate',而是在符號之前。我在回答中修改了它。 – 2013-04-22 16:14:01
爲什麼不調用超類代碼?我並不是說特別是'驗證'會起作用,目前無法檢查 - 但它是類聲明中的正常代碼,並且沒有理由不會被調用。 – 2013-04-22 16:17:00