0
我基本上試圖做的是創建一個自定義驗證,該自定義驗證使用特定選項調用RoR默認驗證,以嘗試和減少樣板(並驗證所有模型全局使用此驗證)在自定義驗證中使用默認驗證程序
上做RoR中某一個領域的自定義校驗的方式是使用validates_each方法,像這樣
class SelectBooleanValidator < ActiveModel::EachValidator
def validate_each(record,attr,value)
#do validation here
end
end
我所試圖做的是調用validator_each內包含驗證方法,所以select_boolean驗證(我正在實現)只使用:包含驗證器和某些選項,也就是我想要做這樣的事情(注意,此代碼不實際工作,但下面的是什麼,我基本上是試圖做)
class SelectBooleanValidator < ActiveModel::EachValidator
include ActiveModel::Validations
def validate_each(record,attr,value)
validates_with InclusionValidator, record,attr,value, {:in => [true, false],:message=>'can\'t be blank'}
end
end
然後,我會(我的模型裏)只是做這
validates :awesome_field, select_boolean:true
而不必做這一切的時候
validates :awesome_field, :inclusion => {:in => [true, false], message: 'can\'t be blank'}
感謝堆,這工作得很好! – mdedetrich 2013-04-30 00:41:23