Class: ValidatesZipcode::Validator

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

Constant Summary

Constants included from CldrRegexpCollection

CldrRegexpCollection::ZIPCODES_REGEX

Instance Method Summary collapse

Methods included from CldrRegexpCollection

#regexp_for_country_alpha2

Constructor Details

#initialize(options) ⇒ Validator

Returns a new instance of Validator.



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

def initialize(options)
  @country_code = options.fetch(:country_code) { }
  @country_code_attribute = options.fetch(:country_code_attribute) { :country_alpha2 }

  super
end

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



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

def validate_each(record, attribute, value)
  alpha2 = @country_code || record.send(@country_code_attribute)
  regexp = regexp_for_country_alpha2(alpha2)
  return unless regexp

  unless regexp.match(value.to_s)
    record.errors.add(attribute, I18n.t('errors.messages.invalid_zipcode', value: value))
  end
end