class DataMapper::Validations::ConfirmationValidator

@author Guy van den Berg @since 0.9

Public Class Methods

new(field_name, options = {}) click to toggle source
Calls superclass method
# File lib/dm-validations/validators/confirmation_validator.rb, line 7
def initialize(field_name, options = {})
  super

  set_optional_by_default

  @confirm_field_name = (
    options[:confirm] || "#{field_name}_confirmation"
  ).to_sym
end

Public Instance Methods

call(target) click to toggle source
# File lib/dm-validations/validators/confirmation_validator.rb, line 17
def call(target)
  return true if valid?(target)

  error_message = (
    @options[:message] || ValidationErrors.default_error_message(
      :confirmation, field_name
    )
  )
  add_error(target, error_message, field_name)

  false
end

Private Instance Methods

valid?(target) click to toggle source
# File lib/dm-validations/validators/confirmation_validator.rb, line 32
def valid?(target)
  value = target.validation_property_value(field_name)
  return true if optional?(value)

  if target.model.properties.named?(field_name)
    return true unless target.attribute_dirty?(field_name)
  end

  confirm_value = target.instance_variable_get("@#{@confirm_field_name}")
  value == confirm_value
end