Class: DataMapper::Validations::ConfirmationValidator

Inherits:
GenericValidator show all
Defined in:
lib/data_mapper/validations/confirmation_validator.rb

Constant Summary collapse

ERROR_MESSAGES =
{
  :confirmation => '#{field} does not match the confirmation'
}

Instance Method Summary collapse

Methods inherited from GenericValidator

#add_error, #validation_error_message

Constructor Details

#initialize(field_name, options = {}) ⇒ ConfirmationValidator

Returns a new instance of ConfirmationValidator.



10
11
12
13
# File 'lib/data_mapper/validations/confirmation_validator.rb', line 10

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

Instance Method Details

#call(target) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/data_mapper/validations/confirmation_validator.rb', line 15

def call(target)
  field = Inflector.humanize(@field_name)

  unless valid?(target)
    error_message = validation_error_message(ERROR_MESSAGES[:confirmation], nil, binding)        
    add_error(target, error_message , @field_name)
    return false
  end
  
  return true
end

#valid?(target) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
# File 'lib/data_mapper/validations/confirmation_validator.rb', line 27

def valid?(target)
  field_value = target.instance_variable_get("@#{@field_name}")
  return true if @options[:allow_nil] && field_value.nil?

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