Commit 0b2c6bb

mo khan <mo@mokhan.ca>
2016-05-01 19:00:09
extract .search method and isolate geocoder api usage.
1 parent 1752898
Changed files (1)
app
app/models/location.rb
@@ -1,22 +1,29 @@
 class Location < ActiveRecord::Base
   before_save :assign_coordinates
 
-  def self.build_from_ip(ip)
-    result = Geocoder.search(ip).first
-    new(
-      address: result.address,
-      city: result.city,
-      region: result.state_code,
-      country: result.country_code,
-      postal_code: result.postal_code,
-      latitude: result.latitude,
-      longitude: result.longitude,
-    )
-  end
+  class << self
+    def build_from_ip(ip)
+      result = search(ip)
+      new(
+        address: result.address,
+        city: result.city,
+        region: result.state_code,
+        country: result.country_code,
+        postal_code: result.postal_code,
+        latitude: result.latitude,
+        longitude: result.longitude,
+      )
+    end
+
+    def from(address, city, region, country)
+      result = search("#{address}, #{city}, #{region}, #{country}")
+      result.present? ? result.coordinates : [nil, nil]
+    end
 
-  def self.from(address, city, region, country)
-    results = Geocoder.search("#{address}, #{city}, #{region}, #{country}")
-    results.any? ? results.first.coordinates : [nil, nil]
+    def search(query)
+      results = Geocoder.search(query)
+      results.any? ? results.first : nil
+    end
   end
 
   private