编写依赖于另一个有效属性的自定义rails属性验证器

时间:2012-12-01 15:30:55

标签: validation ruby-on-rails-3.2

我使用了令人敬畏的client_side_validations宝石,并且我已经编写了一个这样的自定义验证器:

class PersonNameValidator < ActiveModel::EachValidator
  def validate_each(record, attr_name, value)
    record.errors.add(attr_name) if record.errors.has_key?(:person_id)
  end
end

如果:person_name无效,我的目标是让虚拟属性:person_id无效。我的问题是,在另一个验证器中使用if record.errors.has_key? 作为确定另一个属性是否有效的方法是否合理?

我读到验证器按照声明的顺序触发,因此这在我的模型中:

validates :person_id, numericality: { greater_than: 0 }
validates :person_name, presence: true

依靠这种技术作为保持我的验证DRY的方法是明智的吗?

0 个答案:

没有答案