has_addresses demonstrates a reference implementation for handling countries, regions, and addresses.
Countries, regions, and addresses are all simple models whose data and functionality should be able to be standardized across multiple applications. has_addresses adds support for countries and regions based on the ISO 3166 and ISO 3166-2 standard. The data for these standards is obtained through the open-source Debian package, iso-codes.
Along with the simple Country and Region models, addresses can be defined and integrated based on the data in these models. Addresses are minimalistic in terms of the type of data required.
Note that this is a reference implementation and, most likely, should be modified for your own usage.
has_addresses requires additional database tables to work. You can generate a migration for these tables like so:
Then simply migrate your database:
address = Address.new( :street_1 => '1600 Amphitheatre Parkway', :city => 'Mountain View', :region => 'US-CA', :postal_code => '94043' ) address.single_line # => "1600 Amphitheatre Parkway, Mountain View, California 94043, United States"
Before you can run any tests, the following gem must be installed:
To run against a specific version of Rails:
rake test RAILS_FRAMEWORK_ROOT=/path/to/rails
Rails 2.3 or later
enumerate_by 0.4.1 or later