Class: PhoneNumberValidator

Inherits:
ActiveModel::EachValidator
  • Object
show all
Defined in:
lib/louche/validators/phone_number_validator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ PhoneNumberValidator

Returns a new instance of PhoneNumberValidator.



2
3
4
5
6
7
# File 'lib/louche/validators/phone_number_validator.rb', line 2

def initialize(options)
  options.reverse_merge!(message: :invalid_phone_number)
  options.reverse_merge!(regex: /\d{10,}/)
  options.reverse_merge!(cleanup_regex: /[^\d]/)
  super
end

Class Method Details

.format_number(number, regex) ⇒ Object



18
19
20
# File 'lib/louche/validators/phone_number_validator.rb', line 18

def self.format_number(number, regex)
  number.try(:gsub, regex, '')
end

Instance Method Details

#validate_each(record, attribute, value) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/louche/validators/phone_number_validator.rb', line 9

def validate_each(record, attribute, value)
  value = PhoneNumberValidator.format_number(value, options.fetch(:cleanup_regex))
  record.send(:"#{attribute}=", value)

  unless value =~ options.fetch(:regex)
    record.errors.add(attribute, options.fetch(:message), value: value)
  end
end