Class: RadCoreRails::ZipCode
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- RadCoreRails::ZipCode
- Defined in:
- lib/rad_core_rails/zip_code.rb
Class Method Summary collapse
-
.distance_args(filter) ⇒ Object
Query arguments for the ‘distance_query` based on passed filter params.
-
.distance_query ⇒ Object
Query for returning an array of zip codes around the zip-code sent to this function with a given radius in miles.
-
.lat_sub_query ⇒ Object
Query for returning a one latitude for given zip-code.
-
.lng_sub_query ⇒ Object
Query for returning a one longitude value for given zip-code.
Class Method Details
.distance_args(filter) ⇒ Object
Query arguments for the ‘distance_query` based on passed filter params.
52 53 54 55 56 57 |
# File 'lib/rad_core_rails/zip_code.rb', line 52 def distance_args(filter) zip_value = filter[:values].try(:first) || '' distance_miles = filter[:option] || 0 [zip_value, zip_value, zip_value, distance_miles] end |
.distance_query ⇒ Object
Query for returning an array of zip codes around the zip-code sent to this function with a given radius in miles.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rad_core_rails/zip_code.rb', line 29 def distance_query " WITH t AS (SELECT\n zip, (\n 3959 * ACOS (\n LEAST(\n GREATEST(\n (\n COS(RADIANS((\#{lat_sub_query})))\n * COS(RADIANS(zip_codes.latitude))\n * COS(RADIANS(zip_codes.longitude) - RADIANS((\#{lng_sub_query})))\n + SIN(RADIANS((\#{lat_sub_query})))\n * SIN(RADIANS(zip_codes.latitude))\n ), -1\n ), 1\n )\n )\n ) AS distance\n FROM zip_codes) SELECT t.zip FROM t WHERE t.distance < ?\n SQL\nend\n" |
.lat_sub_query ⇒ Object
Query for returning a one latitude for given zip-code
9 10 11 12 13 14 15 16 |
# File 'lib/rad_core_rails/zip_code.rb', line 9 def lat_sub_query " SELECT zip_codes.latitude\n FROM zip_codes\n WHERE zip = ?\n LIMIT 1\n SQL\nend\n" |
.lng_sub_query ⇒ Object
Query for returning a one longitude value for given zip-code
19 20 21 22 23 24 25 26 |
# File 'lib/rad_core_rails/zip_code.rb', line 19 def lng_sub_query " SELECT zip_codes.longitude\n FROM zip_codes\n WHERE zip = ?\n LIMIT 1\n SQL\nend\n" |