nc.*_*nc. 6 validation custom-validators ruby-on-rails-4
我想在模型中创建自定义验证方法,并在自定义验证方法中使用一些现有的验证器(特别是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
Run Code Online (Sandbox Code Playgroud)
您可以这样使用它:
validates(
:my_pseudo_attribute,
:my_custom => {
:min => 0,
:max => 100
}
)
def my_pseudo_attribute
{
:some_attribute => 'foo'
}
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |