0

私が基本的にやろうとしているのは、ボイラープレートを試して減らすための特定のオプションを使用して RoR のデフォルトの検証を呼び出すカスタム検証を作成することです (この検証をすべてのモデルでグローバルに使用するようにします)。

RoR の特定のフィールドでカスタム検証を行う方法は、次のように validates_each メソッドを使用することです。

class SelectBooleanValidator < ActiveModel::EachValidator

  def validate_each(record,attr,value)
    #do validation here
  end

end

私がやろうとしているのは、validator_each 内で包含バリデーター メソッドを呼び出して、select_boolean 検証 (私が実装している) が特定のオプションで :inclusion バリデーターを使用するようにすることです。コードは実際には機能しませんが、以下は私が基本的にやろうとしていることです)

class SelectBooleanValidator < ActiveModel::EachValidator
  include ActiveModel::Validations
  def validate_each(record,attr,value)
    validates_with InclusionValidator, record,attr,value,  {:in => [true, false],:message=>'can\'t be blank'}
  end
end

そして、私は(モデル内で)これを行うだけです

validates :awesome_field, select_boolean:true

これを常に行う代わりに

validates :awesome_field, :inclusion => {:in => [true, false], message: 'can\'t be blank'}
4

1 に答える 1