From ef39d0ce31fa4e94a0ce08aee1b0311381001138 Mon Sep 17 00:00:00 2001 From: alexs Date: Wed, 7 Aug 2013 14:01:27 +1000 Subject: [PATCH] Geocoded Spree addresses --- Gemfile | 1 + Gemfile.lock | 2 ++ app/models/spree/address_decorator.rb | 10 ++++++++++ ...07002915_add_latitude_and_longitude_to_addresses.rb | 6 ++++++ db/schema.rb | 4 +++- 5 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 app/models/spree/address_decorator.rb create mode 100644 db/migrate/20130807002915_add_latitude_and_longitude_to_addresses.rb diff --git a/Gemfile b/Gemfile index ca78871646..ea0056c248 100644 --- a/Gemfile +++ b/Gemfile @@ -31,6 +31,7 @@ gem 'oj' gem 'chili', :github => 'eaterprises/chili' gem 'deface', :github => 'spree/deface' gem 'paperclip' +gem 'geocoder' # Gems used only for assets and not required # in production environments by default. diff --git a/Gemfile.lock b/Gemfile.lock index 784149fdf3..c8e7a0259e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -263,6 +263,7 @@ GEM ruby-hmac formatador (0.2.4) fssm (0.2.10) + geocoder (1.1.8) haml (3.1.6) highline (1.6.18) hike (1.2.3) @@ -463,6 +464,7 @@ DEPENDENCIES enterprises_distributor_info_rich_text_feature! factory_girl_rails faker + geocoder haml jquery-rails letter_opener diff --git a/app/models/spree/address_decorator.rb b/app/models/spree/address_decorator.rb new file mode 100644 index 0000000000..54938b25f4 --- /dev/null +++ b/app/models/spree/address_decorator.rb @@ -0,0 +1,10 @@ +Spree::Address.class_eval do + geocoded_by :full_address + after_validation :geocode + + def full_address + full_address = [address1, address2, zipcode, city, country.name, state.name] + filtered_address = full_address.select{ |field| !field.nil? && field != '' } + filtered_address.compact.join(', ') + end +end \ No newline at end of file diff --git a/db/migrate/20130807002915_add_latitude_and_longitude_to_addresses.rb b/db/migrate/20130807002915_add_latitude_and_longitude_to_addresses.rb new file mode 100644 index 0000000000..7fbfe9c30e --- /dev/null +++ b/db/migrate/20130807002915_add_latitude_and_longitude_to_addresses.rb @@ -0,0 +1,6 @@ +class AddLatitudeAndLongitudeToAddresses < ActiveRecord::Migration + def change + add_column :spree_addresses, :latitude, :float + add_column :spree_addresses, :longitude, :float + end +end diff --git a/db/schema.rb b/db/schema.rb index 9934e32e84..c1b850281c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20130806055125) do +ActiveRecord::Schema.define(:version => 20130807002915) do create_table "cms_blocks", :force => true do |t| t.integer "page_id", :null => false @@ -252,6 +252,8 @@ ActiveRecord::Schema.define(:version => 20130806055125) do t.datetime "created_at", :null => false t.datetime "updated_at", :null => false t.string "company" + t.float "latitude" + t.float "longitude" end add_index "spree_addresses", ["firstname"], :name => "index_addresses_on_firstname"