
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Adds zipcode / postal code validation support to Rails (ActiveModel), considering postal code formats for mostly every country.
ValidatesZipcode
currently support 233 country codes. Regex data taken from several sources, being the main source the CLDR database (release 27, around 159). Any other country's postal code will validate without errors.
ValidatesZipcode
supports Rails >= 4.2 and Ruby >= 2.4. This gem could work in Rails 3.2 and Ruby 1.9.3 as well, yet unsupported; try v0.2 series if having trouble with later versions. Truffleruby is also tested, but no reports of working in production apps for now.
Add this line to your application's Gemfile:
gem 'validates_zipcode'
And then execute:
$ bundle
Or install it yourself as:
$ gem install validates_zipcode
validates_zipcode :zipcode
validates :zipcode, zipcode: true
ValidatesZipcode
expects the model to have an attribute called country_alpha2
to contain the country code.
You can provide your own country_code using :country_code
option, or specify which attribute contains this information
using :country_code_attribute
option.
validates :zipcode, zipcode: { country_code: :es }
validates :zipcode, zipcode: { country_code_attribute: :my_country_code_column }
If you need to localize the error message, just add this to your I18n locale file:
errors:
messages:
invalid_zipcode: Your zipcode error message.
You can override this on a per-model basis by passing in a :message
key with the validation:
validates :zipcode, zipcode: { message: 'Your per-model zipcode error message.' }
ValidatesZipcode.valid?('93108', 'ES')
# => true
This gem can also be used for formatting zipcodes according to country specific rules.
ValidatesZipcode.format('Sw1A 2aA', 'UK')
# => 'SW1A 2AA'
If the zipcode is not valid an exception is raised.
ValidatesZipcode.format('Sw1A 2aA', 'FR')
# => raises ValidatesZipcode::InvalidZipcodeError
At the moment not every country is supported. See lib/validates_zipcode/formatter.rb to find all available countries.
In order to generate test data, we suggest using the regexp-examples gem This dependency will allow you to create examples as follows:
require "regexp-examples"
ValidatesZipcode::CldrRegexpCollection::ZIPCODES_REGEX[:ES].examples
# => ["00000", "00001", "00002", "00003", ..., "44443", "44444"]
ValidatesZipcode::CldrRegexpCollection::ZIPCODES_REGEX[:ES].random_example
# => "27072"
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)Also, you should read and follow our Code of Conduct.
To see the generous people who have contributed code, take a look at the contributors list.
Copyright (c) 2014 David Gil Pérez, released under the MIT license
FAQs
Unknown package
We found that validates_zipcode demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.