rails-为模型中的每个属性添加一个自定义验证器



我有一个模型,在这个模型中,我必须使用Validator验证特定的属性。由于这种验证既复杂又漫长,我想指定不同的验证器在哪个属性中工作。

伪代码:使用:NameValidator验证:name验证:年龄,使用:AgeValidator

我怎样才能做到这一点?

感谢

您可以定义每个属性的自定义验证类,如下所示:

class Person < ApplicationRecord
validates :email, presence: true, email: true
end
class EmailValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value =~ /A([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})z/i
record.errors.add attribute, (options[:message] || "is not an email")
end
end
end

您可以使用自定义验证器(https://guides.rubyonrails.org/active_record_validations.html#performing-自定义验证(或使用validate方法:

class Model < ActiveRecord
validate :hard_validator_for_name

private
def hard_validator_for_name
if self.name != 'VALID NAME'
errors.add(:name, "name not valid")
end
end
end

相关内容

  • 没有找到相关文章

最新更新