Zones based on ZIP code ranges
Ruby JavaScript
Switch branches/tags
Nothing to show
Pull request Compare This branch is 4 commits ahead of wapcaplet:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Zip Code Zone

This extension provides Zones based on ZIP code ranges to the Spree e-Commerce framework.

Eric Pierce ( originally wrote it for Spree 0.10.2. Laurence A. Lee ( updated it for Spree 0.40.0 and Rails 3.


To install, add this gem to your Gemfile and install the gem as usual with bundler.

$ bundle install

If using Rails 3.0, run the extension's install rake task to copy over the database migration and updated JavaScript file. This will change with Rails 3.1.

$ rake spree_zip_code_zone:install

Then migrate your database to add the necessary tables:

rake db:migrate


ZIP code ranges can be edited from the Administration / Configuration interface; then a Zone may be defined with one or more ZIP code ranges as members.

Once you've defined your zones, you can configure them for taxation or shipping like you would with a state- or country-based zone.


This extension creates one new model, ZipCodeRange, which stores a starting and ending ZIP code. The design of this model is based on the State model, with slight changes to the comparison and to_s methods.

There is an Admin::ZipCodeRangesController that thinly wraps the administrative views for creating, updating, and/or deleting ZIP code ranges.

The zip_code_zone_extension.rb contains overrides to the Zone and Admin::ZonesController classes in order to support the ZipCodeRange model as a zoneable type. Two admin/zones view partials are also overridden, as is the public/javascripts/zone.js script responsible for showing and hiding the zonable fields.