class ActiveModel::Validations::ConfirmationValidator

:nodoc:

def confirmation_value_equal?(record, attribute, value, confirmed)

def confirmation_value_equal?(record, attribute, value, confirmed)
  if !options[:case_sensitive] && value.is_a?(String)
    value.casecmp(confirmed) == 0
  else
    value == confirmed
  end
end

def initialize(options)

:nodoc:
def initialize(options)
  super({ case_sensitive: true }.merge!(options))
  setup!(options[:class])
end

def setup!(klass)

def setup!(klass)
  klass.attr_reader(*attributes.filter_map do |attribute|
    :"#{attribute}_confirmation" unless klass.method_defined?(:"#{attribute}_confirmation")
  end)
  klass.attr_writer(*attributes.filter_map do |attribute|
    :"#{attribute}_confirmation" unless klass.method_defined?(:"#{attribute}_confirmation=")
  end)
end

def validate_each(record, attribute, value)

def validate_each(record, attribute, value)
  unless (confirmed = record.public_send("#{attribute}_confirmation")).nil?
    unless confirmation_value_equal?(record, attribute, value, confirmed)
      human_attribute_name = record.class.human_attribute_name(attribute)
      record.errors.add(:"#{attribute}_confirmation", :confirmation, **options.except(:case_sensitive).merge!(attribute: human_attribute_name))
    end
  end
end