2013-04-29 2 views
0

Что я в основном пытаюсь сделать, так это создать пользовательскую проверку, которая вызывает проверку подлинности по умолчанию RoR с определенными параметрами, чтобы попытаться уменьшить шаблонный шаблон (и эта проверка будет использоваться глобально всеми моделями)Использование валидатора по умолчанию в пользовательских проверках

способ сделать заказ валидации на определенное поле в RoR является использованием метода validates_each, как и

class SelectBooleanValidator < ActiveModel::EachValidator 

    def validate_each(record,attr,value) 
    #do validation here 
    end 

end 

То, что я пытаюсь сделать, это вызвать метод включения валидаторов в validator_each, так что select_boolean validation (который я реализую) просто использует валидатор включения с определенными параметрами , То есть я хочу сделать что-то вроде этого (обратите внимание, что этот код не на самом деле работает, но ниже того, что я в основном пытаюсь сделать)

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'} 

ответ

1
class SelectBooleanValidator < ActiveModel::Validations::InclusionValidator 
    def options 
    super.merge(:in => [true, false], message: 'can\'t be blank') 
    end 
end 
+0

Благодарности куч, это работало отлично! – mdedetrich

Смежные вопросы