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

検証を DRY に保つ方法として、この手法に頼るのは賢明ですか?

4

0 に答える 0