diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/geo_location_service.rb | 2 | ||||
| -rw-r--r-- | app/models/user.rb | 19 | ||||
| -rw-r--r-- | app/views/devise/registrations/edit.html.erb | 3 | ||||
| -rw-r--r-- | app/views/devise/registrations/new.html.erb | 3 |
4 files changed, 26 insertions, 1 deletions
diff --git a/app/models/geo_location_service.rb b/app/models/geo_location_service.rb index e5a0dc5..50f418f 100644 --- a/app/models/geo_location_service.rb +++ b/app/models/geo_location_service.rb @@ -23,6 +23,8 @@ class GeoLocationService def self.ExtractGeoLocationFromJson( jsonString) parsed = JSON.parse(jsonString) + return nil if parsed["locations"].length == 0 + # need to handle more than one match x = parsed["locations"][0]["feature"]["geometry"]["x"] y = parsed["locations"][0]["feature"]["geometry"]["y"] diff --git a/app/models/user.rb b/app/models/user.rb index 4a170b9..a471980 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,8 +1,25 @@ class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable + after_save :get_location - attr_accessible :name, :email, :password, :password_confirmation, :remember_me + attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :postal_code, :latitude, :longitude has_many :needs has_many :links acts_as_tagger + +private + + def get_location + + return if self.postal_code.nil? + + location = GeoLocationService.GetGeoLocation(self.postal_code) + + return if location.nil? + + update_column :latitude, location.y + update_column :longitude, location.x + + end + end diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb index 1465dcc..ae74bdd 100644 --- a/app/views/devise/registrations/edit.html.erb +++ b/app/views/devise/registrations/edit.html.erb @@ -9,6 +9,9 @@ <div><%= f.label :email %><br /> <%= f.email_field :email %></div> + <div><%= f.label :postal_code %><br /> + <%= f.text_field :postal_code %></div> + <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div> <% end %> diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb index 9a9a71d..4d70d49 100644 --- a/app/views/devise/registrations/new.html.erb +++ b/app/views/devise/registrations/new.html.erb @@ -9,6 +9,9 @@ <div><%= f.label :email %><br /> <%= f.email_field :email %></div> + <div><%= f.label :postal_code %><br /> + <%= f.text_field :postal_code %></div> + <div><%= f.label :password %><br /> <%= f.password_field :password %></div> |
