Validator
校验可以简单分为 3 个层次:1)完全使用原生的;2)使用原生的 + 带条件判断,或自行设置 errors;3)自定义校验器
自定义校验器,有两种方式:继承于 Validator 或 EachValidator.
继承于 Validator
校验器在整个项目生命周期中只初始化一次。它针对的是整个对象,并且自动执行。这种方式,由 validates_with
加校验器名字的方式进行调用。
任何继承于 ActiveModel::Validator 的校验器都要实现 validate
方法,此方法接收要校验的 record 做为参数。然后,通过 validates_with
方法可以使用刚才定义的校验器。
继承于 EachValidator
实际上,推荐使用这种方式。这种方式,由 validates
以参数的方式进行调用。
任何继承于 ActiveModel::EachValidator 的校验器都要实现 validate_each
方法,此方法接收要校验的 record、attribute、value 做为参数。
然后,通过 validates
方法(刚才定义的校验器做为参数之一)可以使用刚才定义的校验。
语法糖:
Note: EachValidator 也继承于 Validator. 但 Rails 所有所有对外提供的校验器,都继承于 EachValidator.
最后更新于