class SocialSecurityNumber::Validator

SocialSecurityNumber::Validator

Constants

SUPPORTED_COUNTRY_CODES

Attributes

civil_number[RW]
country_code[RW]
error[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/social_security_number/validator.rb, line 9
def initialize(params = {})
  @civil_number = params[:number].to_s.strip.gsub(/\s+/, '').upcase
  @country_code = params[:country_code].to_s.strip.gsub(/\s+/, '').upcase

  @birth_date = params[:birth_date] ? params[:birth_date] : nil
  @gender = params[:gender] ? params[:gender] : nil

  unless self.class::SUPPORTED_COUNTRY_CODES.include?(@country_code)
    raise "Unexpected country code '#{country_code}' that is not yet supported"
  end
end

Public Instance Methods

valid?() click to toggle source
# File lib/social_security_number/validator.rb, line 21
def valid?
  civil_number = SocialSecurityNumber.const_get(@country_code.capitalize).new(@civil_number)

  if civil_number.valid?
    if !@birth_date.nil? && !civil_number.birth_date.nil? && civil_number.birth_date.to_s != @birth_date.to_s
      @error = "birth date #{@birth_date} dont match #{civil_number.birth_date}"
      return false
    end
    if !@gender.nil? && !civil_number.gender.nil? && civil_number.gender.to_s.strip != @gender.to_s.strip
      @error = "gender #{@gender} dont match #{civil_number.gender}"
      return false
    end
    return true
  end
  @error = civil_number.error
  false
end