-
Notifications
You must be signed in to change notification settings - Fork 6
/
zip_code.rb
52 lines (41 loc) · 1.54 KB
/
zip_code.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
require 'earth/model'
require 'earth/loader'
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 FLOAT,
longitude FLOAT,
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')
def country
Country.united_states
end
warn_unless_size 43770
warn_if_nonexistent_owner_except :egrid_subregion
end