From f164a750c3edd593cf60df828804192dc205d6fd Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Sun, 3 Nov 2013 06:28:52 -0600 Subject: [PATCH] vrfs-774: fixed infinite loop issue setting lat/lng --- ruby/lib/jam_ruby/models/user.rb | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index 35cf1e2a2..e24ff6b9a 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -978,7 +978,9 @@ module JamRuby end def check_lat_lng - update_lat_lng if (city_changed? || state_changed? || country_changed?) && !lat_changed? + if (city_changed? || state_changed? || country_changed?) && !lat_changed? && !lng_changed? + update_lat_lng + end end def update_lat_lng(ip_addy=nil) @@ -988,17 +990,23 @@ module JamRuby query[:region] = self.state unless self.state.blank? query[:country] = self.country unless self.country.blank? if geo = MaxMindGeo.where(query).limit(1).first - self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) - yn = true + if geo.lat && geo.lng && (self.lat != geo.lat || self.lng != geo.lng) + self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) + yn = true + end end elsif ip_addy if geo = MaxMindGeo.ip_lookup(ip_addy) - self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) - yn = true + if self.lat != geo.lat || self.lng != geo.lng + self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) + yn = true + end end else - self.update_attributes({ :lat => nil, :lng => nil }) - yn = true + if self.lat || self.lng + self.update_attributes({ :lat => nil, :lng => nil }) + yn = true + end end yn end