lib/earth/locality/zip_code.rb in earth-0.12.4 vs lib/earth/locality/zip_code.rb in earth-1.0.0
- old
+ new
@@ -1,24 +1,51 @@
-require ::File.join(Earth::VENDOR_DIR, 'geokit-rails', 'lib', 'geokit-rails') # for acts_as_mappable
+require 'earth/model'
+require 'earth/loader'
+Earth::Loader.load_plugins
+require 'earth/locality/climate_division'
+require 'earth/locality/country'
+require 'earth/locality/egrid_subregion'
+require 'earth/locality/state'
+require 'earth/electricity/electric_market'
+require 'earth/electricity/electric_utility'
+
class ZipCode < ActiveRecord::Base
+ data_miner do
+ process "Ensure Country is imported because it's like a belongs_to association" do
+ Country.run_data_miner!
+ end
+ end
+
+ extend Earth::Model
+
+ TABLE_STRUCTURE = <<-EOS
+
+CREATE TABLE zip_codes
+ (
+ name CHARACTER VARYING(255) NOT NULL PRIMARY KEY,
+ state_postal_abbreviation CHARACTER VARYING(255),
+ description CHARACTER VARYING(255),
+ latitude CHARACTER VARYING(255),
+ longitude CHARACTER VARYING(255),
+ egrid_subregion_abbreviation CHARACTER VARYING(255),
+ climate_division_name CHARACTER VARYING(255),
+ population INTEGER
+ );
+
+EOS
+
self.primary_key = "name"
belongs_to :climate_division, :foreign_key => 'climate_division_name'
belongs_to :state, :foreign_key => 'state_postal_abbreviation'
belongs_to :egrid_subregion, :foreign_key => 'egrid_subregion_abbreviation'
has_many :electric_markets, :foreign_key => 'zip_code_name'
has_many :electric_utilities, :through => :electric_markets
scope :known_subregion, where('egrid_subregion_abbreviation IS NOT NULL')
- data_miner do
- process "Ensure Country is imported because it's like a belongs_to association" do
- Country.run_data_miner!
- end
- end
-
def country
Country.united_states
end
# Used by LodgingProperty custom find to find properties near to a zip code
@@ -29,17 +56,9 @@
# Used by LodgingProperty custom find to find properties near to a zip code
acts_as_mappable :default_units => :kilometres,
:lat_column_name => :latitude,
:lng_column_name => :longitude
- col :name
- col :state_postal_abbreviation
- col :description
- col :latitude
- col :longitude
- col :egrid_subregion_abbreviation
- col :climate_division_name
- col :population, :type => :integer
warn_unless_size 43770
warn_if_nonexistent_owner_except :egrid_subregion
end