我正在使用很棒的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
依靠这种技术来保持我的验证干燥是否明智?