我想擁有一個可以覆蓋默認驗證的默認驗證和子類的超類。從方法加載模型驗證?
class Foo < ActiveRecord::Base
FIELDS = [:field1, :field2]
after_initialize :include_rules
def include_rules
FIELDS.each do |field|
self.class.send(:validates, field, presence: true)
end
end
end
忽略將從超類繼承的子類...
每一個表單提交的時候,after_initialize被調用和驗證被複制。
I.e.提交表單4倍
輸出:
field1 can't be blank
field1 can't be blank
field1 can't be blank
field1 can't be blank
field2 can't be blank
field2 can't be blank
field2 can't be blank
field2 can't be blank
有沒有簡單的方法來驗證加載只有一次,但與調用他們的方法?
'after_initialize'可能不是您想要的回調函數:每次找到並實例化對象時都會觸發它。也許你打算使用'before_create'或'before_save' – MrYoshiji
使用before_create,before_validation和before_save時同樣存在問題。 – MichaelHajuddah
爲什麼在初始化時定義這些驗證?您已經可以創建一個子類(繼承)並讓它們適用於子類。 – coreyward