我想在我的模型中创建一个自定义验证方法,并在自定义验证方法中使用一些现有的验证器(特别是validates_numericality_of
)。
这可能吗?如果是这样,我该怎么做?
在某些情况下:我们正在使用具有哈希属性的非 ActiveRecord ORM。我想对哈希内的东西进行验证。如果有办法做到这一点,比如validates_numericality_of :my_attribute.:subattribute
或其他什么,那也很好。
谢谢你。
我想在我的模型中创建一个自定义验证方法,并在自定义验证方法中使用一些现有的验证器(特别是validates_numericality_of
)。
这可能吗?如果是这样,我该怎么做?
在某些情况下:我们正在使用具有哈希属性的非 ActiveRecord ORM。我想对哈希内的东西进行验证。如果有办法做到这一点,比如validates_numericality_of :my_attribute.:subattribute
或其他什么,那也很好。
谢谢你。
我相信这应该对你有用。
class MyCustomValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
validator = ActiveModel::Validations::NumericalityValidator.new(
:greater_than_or_equal_to => options[:min],
:less_than_or_equal_to => options[:max],
:attributes => value[:some_attribute]
)
validator.validate(record)
end
end
你可以像这样使用它:
validates(
:my_pseudo_attribute,
:my_custom => {
:min => 0,
:max => 100
}
)
def my_pseudo_attribute
{
:some_attribute => 'foo'
}
end