class ValidatesCountrycode::ZipcodeValidator

rubocop:disable ClassLength Validates a country-code against existing country codes, such as US, BE, DK etc.

@author Frederik Spang Thomsen

Public Class Methods

country_codes() click to toggle source

Returns matching country_codes

@example Using country codes with symbol key

CountryCodeValidator.country_codes[:DK] # => "DENMARK"

@example Using country codes with string key

CountryCodeValidator.country_codes['DK'] # => "DENMARK"

@return [ActiveSupport::HashWithIndifferentAccess] with KEY => COUNTRY

# File lib/validates_countrycode.rb, line 25
def self.country_codes
  {
    AF: 'AFGHANISTAN',
    AX: 'ÅLAND ISLANDS',
    AL: 'ALBANIA',
    DZ: 'ALGERIA',
    AS: 'AMERICAN SAMOA',
    AD: 'ANDORRA',
    AO: 'ANGOLA',
    AI: 'ANGUILLA',
    AQ: 'ANTARCTICA',
    AG: 'ANTIGUA AND BARBUDA',
    AR: 'ARGENTINA',
    AM: 'ARMENIA',
    AW: 'ARUBA',
    AU: 'AUSTRALIA',
    AT: 'AUSTRIA',
    AZ: 'AZERBAIJAN',
    BS: 'BAHAMAS',
    BH: 'BAHRAIN',
    BD: 'BANGLADESH',
    BB: 'BARBADOS',
    BY: 'BELARUS',
    BE: 'BELGIUM',
    BZ: 'BELIZE',
    BJ: 'BENIN',
    BM: 'BERMUDA',
    BT: 'BHUTAN',
    BO: 'BOLIVIA, PLURINATIONAL STATE OF',
    BQ: 'BONAIRE, SINT EUSTATIUS AND SABA',
    BA: 'BOSNIA AND HERZEGOVINA',
    BW: 'BOTSWANA',
    BV: 'BOUVET ISLAND',
    BR: 'BRAZIL',
    IO: 'BRITISH INDIAN OCEAN TERRITORY',
    BN: 'BRUNEI DARUSSALAM',
    BG: 'BULGARIA',
    BF: 'BURKINA FASO',
    BI: 'BURUNDI',
    KH: 'CAMBODIA',
    CM: 'CAMEROON',
    CA: 'CANADA',
    CV: 'CAPE VERDE',
    KY: 'CAYMAN ISLANDS',
    CF: 'CENTRAL AFRICAN REPUBLIC',
    TD: 'CHAD',
    CL: 'CHILE',
    CN: 'CHINA',
    CX: 'CHRISTMAS ISLAND',
    CC: 'COCOS (KEELING) ISLANDS',
    CO: 'COLOMBIA',
    KM: 'COMOROS',
    CG: 'CONGO',
    CD: 'CONGO, THE DEMOCRATIC REPUBLIC OF THE',
    CK: 'COOK ISLANDS',
    CR: 'COSTA RICA',
    CI: "CÔTE D'IVOIRE",
    HR: 'CROATIA',
    CU: 'CUBA',
    CW: 'CURAÇAO',
    CY: 'CYPRUS',
    CZ: 'CZECH REPUBLIC',
    DK: 'DENMARK',
    DJ: 'DJIBOUTI',
    DM: 'DOMINICA',
    DO: 'DOMINICAN REPUBLIC',
    EC: 'ECUADOR',
    EG: 'EGYPT',
    SV: 'EL SALVADOR',
    GQ: 'EQUATORIAL GUINEA',
    ER: 'ERITREA',
    EE: 'ESTONIA',
    ET: 'ETHIOPIA',
    FK: 'FALKLAND ISLANDS (MALVINAS)',
    FO: 'FAROE ISLANDS',
    FJ: 'FIJI',
    FI: 'FINLAND',
    FR: 'FRANCE',
    GF: 'FRENCH GUIANA',
    PF: 'FRENCH POLYNESIA',
    TF: 'FRENCH SOUTHERN TERRITORIES',
    GA: 'GABON',
    GM: 'GAMBIA',
    GE: 'GEORGIA',
    DE: 'GERMANY',
    GH: 'GHANA',
    GI: 'GIBRALTAR',
    GR: 'GREECE',
    GL: 'GREENLAND',
    GD: 'GRENADA',
    GP: 'GUADELOUPE',
    GU: 'GUAM',
    GT: 'GUATEMALA',
    GG: 'GUERNSEY',
    GN: 'GUINEA',
    GW: 'GUINEA-BISSAU',
    GY: 'GUYANA',
    HT: 'HAITI',
    HM: 'HEARD ISLAND AND MCDONALD ISLANDS',
    VA: 'HOLY SEE (VATICAN CITY STATE)',
    HN: 'HONDURAS',
    HK: 'HONG KONG',
    HU: 'HUNGARY',
    IS: 'ICELAND',
    IN: 'INDIA',
    ID: 'INDONESIA',
    IR: 'IRAN, ISLAMIC REPUBLIC OF',
    IQ: 'IRAQ',
    IE: 'IRELAND',
    IM: 'ISLE OF MAN',
    IL: 'ISRAEL',
    IT: 'ITALY',
    JM: 'JAMAICA',
    JP: 'JAPAN',
    JE: 'JERSEY',
    JO: 'JORDAN',
    KZ: 'KAZAKHSTAN',
    KE: 'KENYA',
    KI: 'KIRIBATI',
    KP: "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF",
    KR: 'KOREA, REPUBLIC OF',
    KW: 'KUWAIT',
    KG: 'KYRGYZSTAN',
    LA: "LAO PEOPLE'S DEMOCRATIC REPUBLIC",
    LV: 'LATVIA',
    LB: 'LEBANON',
    LS: 'LESOTHO',
    LR: 'LIBERIA',
    LY: 'LIBYA',
    LI: 'LIECHTENSTEIN',
    LT: 'LITHUANIA',
    LU: 'LUXEMBOURG',
    MO: 'MACAO',
    MK: 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF',
    MG: 'MADAGASCAR',
    MW: 'MALAWI',
    MY: 'MALAYSIA',
    MV: 'MALDIVES',
    ML: 'MALI',
    MT: 'MALTA',
    MH: 'MARSHALL ISLANDS',
    MQ: 'MARTINIQUE',
    MR: 'MAURITANIA',
    MU: 'MAURITIUS',
    YT: 'MAYOTTE',
    MX: 'MEXICO',
    FM: 'MICRONESIA, FEDERATED STATES OF',
    MD: 'MOLDOVA, REPUBLIC OF',
    MC: 'MONACO',
    MN: 'MONGOLIA',
    ME: 'MONTENEGRO',
    MS: 'MONTSERRAT',
    MA: 'MOROCCO',
    MZ: 'MOZAMBIQUE',
    MM: 'MYANMAR',
    NA: 'NAMIBIA',
    NR: 'NAURU',
    NP: 'NEPAL',
    NL: 'NETHERLANDS',
    NC: 'NEW CALEDONIA',
    NZ: 'NEW ZEALAND',
    NI: 'NICARAGUA',
    NE: 'NIGER',
    NG: 'NIGERIA',
    NU: 'NIUE',
    NF: 'NORFOLK ISLAND',
    MP: 'NORTHERN MARIANA ISLANDS',
    NO: 'NORWAY',
    OM: 'OMAN',
    PK: 'PAKISTAN',
    PW: 'PALAU',
    PS: 'PALESTINE, STATE OF',
    PA: 'PANAMA',
    PG: 'PAPUA NEW GUINEA',
    PY: 'PARAGUAY',
    PE: 'PERU',
    PH: 'PHILIPPINES',
    PN: 'PITCAIRN',
    PL: 'POLAND',
    PT: 'PORTUGAL',
    PR: 'PUERTO RICO',
    QA: 'QATAR',
    RE: 'RÉUNION',
    RO: 'ROMANIA',
    RU: 'RUSSIAN FEDERATION',
    RW: 'RWANDA',
    BL: 'SAINT BARTHÉLEMY',
    SH: 'SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA',
    KN: 'SAINT KITTS AND NEVIS',
    LC: 'SAINT LUCIA',
    MF: 'SAINT MARTIN (FRENCH PART)',
    PM: 'SAINT PIERRE AND MIQUELON',
    VC: 'SAINT VINCENT AND THE GRENADINES',
    WS: 'SAMOA',
    SM: 'SAN MARINO',
    ST: 'SAO TOME AND PRINCIPE',
    SA: 'SAUDI ARABIA',
    SN: 'SENEGAL',
    RS: 'SERBIA',
    SC: 'SEYCHELLES',
    SL: 'SIERRA LEONE',
    SG: 'SINGAPORE',
    SX: 'SINT MAARTEN (DUTCH PART)',
    SK: 'SLOVAKIA',
    SI: 'SLOVENIA',
    SB: 'SOLOMON ISLANDS',
    SO: 'SOMALIA',
    ZA: 'SOUTH AFRICA',
    GS: 'SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS',
    SS: 'SOUTH SUDAN',
    ES: 'SPAIN',
    LK: 'SRI LANKA',
    SD: 'SUDAN',
    SR: 'SURINAME',
    SJ: 'SVALBARD AND JAN MAYEN',
    SZ: 'SWAZILAND',
    SE: 'SWEDEN',
    CH: 'SWITZERLAND',
    SY: 'SYRIAN ARAB REPUBLIC',
    TW: 'TAIWAN, PROVINCE OF CHINA',
    TJ: 'TAJIKISTAN',
    TZ: 'TANZANIA, UNITED REPUBLIC OF',
    TH: 'THAILAND',
    TL: 'TIMOR-LESTE',
    TG: 'TOGO',
    TK: 'TOKELAU',
    TO: 'TONGA',
    TT: 'TRINIDAD AND TOBAGO',
    TN: 'TUNISIA',
    TR: 'TURKEY',
    TM: 'TURKMENISTAN',
    TC: 'TURKS AND CAICOS ISLANDS',
    TV: 'TUVALU',
    UG: 'UGANDA',
    UA: 'UKRAINE',
    AE: 'UNITED ARAB EMIRATES',
    GB: 'UNITED KINGDOM',
    US: 'UNITED STATES',
    UM: 'UNITED STATES MINOR OUTLYING ISLANDS',
    UY: 'URUGUAY',
    UZ: 'UZBEKISTAN',
    VU: 'VANUATU',
    VE: 'VENEZUELA, BOLIVARIAN REPUBLIC OF',
    VN: 'VIETNAM',
    VG: 'VIRGIN ISLANDS, BRITISH',
    VI: 'VIRGIN ISLANDS, U.S.',
    WF: 'WALLIS AND FUTUNA',
    EH: 'WESTERN SAHARA',
    YE: 'YEMEN',
    ZM: 'ZAMBIA',
    ZW: 'ZIMBABWE'
  }.with_indifferent_access
end

Public Instance Methods

validate_each(record, attribute, value) click to toggle source

Adds

# File lib/validates_countrycode.rb, line 12
def validate_each(record, attribute, value)
  unless self.class.country_codes[value.to_s.upcase].present?
    record.errors[attribute] << record.errors.generate_message(attribute, :invalid)
  end
end