Class: ValidatesZipcode::Validator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/validates_zipcode/validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Validator

Returns a new instance of Validator.



20
21
22
23
24
25
26
# File 'lib/validates_zipcode/validator.rb', line 20

def initialize(options)
  @country_code           = options.fetch(:country_code, nil)
  @country_code_attribute = options.fetch(:country_code_attribute, :country_alpha2)
  @excluded_country_codes = options.fetch(:excluded_country_codes, [])
  @message                = options.fetch(:message, nil)
  super
end

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/validates_zipcode/validator.rb', line 28

def validate_each(record, attribute, value)
  alpha2  = @country_code || record.send(@country_code_attribute)
  options = { zipcode: value.to_s,
              country_alpha2: alpha2,
              excluded_country_codes: @excluded_country_codes }

  unless ValidatesZipcode::Zipcode.new(options).valid?
    message = @message || I18n.t('errors.messages.invalid_zipcode', value: value, default: 'Zipcode is invalid')
    record.errors.add(attribute, :invalid_zipcode, message: message)
  end
end