1

我正在使用很棒的client_side_validations gem,并且我编写了一个这样的自定义验证器:

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

依靠这种技术来保持我的验证干燥是否明智?

4

0 回答 0