Class: TelephoneValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- TelephoneValidator
- Defined in:
- app/validators/telephone_validator.rb
Instance Method Summary collapse
- #valid_eleven_digit?(input) ⇒ Boolean
- #valid_seven_digit?(input) ⇒ Boolean
- #valid_ten_digit?(input) ⇒ Boolean
- #validate_by_region(region, formatted_value) ⇒ Object
- #validate_each(object, attribute, value) ⇒ Object
Instance Method Details
#valid_eleven_digit?(input) ⇒ Boolean
24 25 26 |
# File 'app/validators/telephone_validator.rb', line 24 def valid_eleven_digit?(input) input.length == 11 && input[0] == "1" && valid_ten_digit?(input.slice(-10, 10)) end |
#valid_seven_digit?(input) ⇒ Boolean
16 17 18 |
# File 'app/validators/telephone_validator.rb', line 16 def valid_seven_digit?(input) input.length == 7 && input[0] != "0" && input[0] != "1" end |
#valid_ten_digit?(input) ⇒ Boolean
20 21 22 |
# File 'app/validators/telephone_validator.rb', line 20 def valid_ten_digit?(input) input.length == 10 && input[0] != "0" && input[0] != "1" && valid_seven_digit?(input.slice(-7, 7)) end |
#validate_by_region(region, formatted_value) ⇒ Object
10 11 12 13 14 |
# File 'app/validators/telephone_validator.rb', line 10 def validate_by_region(region, formatted_value) if region == :north_america valid_eleven_digit?(formatted_value) || valid_ten_digit?(formatted_value) || valid_seven_digit?(formatted_value) end end |
#validate_each(object, attribute, value) ⇒ Object
2 3 4 5 6 7 8 |
# File 'app/validators/telephone_validator.rb', line 2 def validate_each(object, attribute, value) formatted_value = value.gsub(/[\s\.\+\(\)-]*/, "") is_number = !(formatted_value =~ /^[0-9+\(\)#\.\s\/ext-]+$/).nil? unless is_number && validate_by_region([:region], formatted_value) object.errors[attribute] << ([:message] || "is not formatted properly") end end |