Phonelib provides a validator for ActiveRecord models.
Basic Validation
validates :attribute, phone: true
Note: Passing a blank value will fail validation.
Advanced Validation Options
validates :attribute, phone: {
possible: true, # Check if number is a possible phone number (less strict)
allow_blank: true, # Validation passes if value is blank
types: [:voip, :mobile], # Validate against specific patterns
countries: [:us, :ca], # Validate against specific countries
country_specifier: -> phone { phone.country.try(:upcase) }, # Dynamic country detection
extensions: false # Check for phone extension to be blank
}
validates :attribute, phone: { possible: true, allow_blank: true, types: [:voip, :mobile], country_specifier: -> phone { phone.country.try(:upcase) } }