Class: MecsRatio

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Earth::Model
Defined in:
lib/earth/industry/mecs_ratio.rb

Constant Summary collapse

TABLE_STRUCTURE =
<<-EOS

CREATE TABLE mecs_ratios
  (
     name                                 CHARACTER VARYING(255) NOT NULL PRIMARY KEY,
     census_region_number                 INTEGER,
     naics_code                           CHARACTER VARYING(255),
     energy_per_dollar_of_shipments       FLOAT,
     energy_per_dollar_of_shipments_units CHARACTER VARYING(255)
  );

EOS

Class Method Summary collapse

Methods included from Earth::Model

extend_mining, extended, registry

Class Method Details

.find_by_naics_code(code) ⇒ Object

Find the first record whose naics_code matches code and whose energy per dollar shipment is present. If no record found chop off the last character of code and try again, and so on.



27
28
29
# File 'lib/earth/industry/mecs_ratio.rb', line 27

def self.find_by_naics_code(code)
  candidate = find_by_naics_code_and_census_region_number(code, nil)
end

.find_by_naics_code_and_census_region_number(code, number, original_number = number) ⇒ Object

Find the first record whose census_region_number matches number, whose naics_code matches code, and whose energy per dollar of shipments is present. If none found and we know census region number, try looking nationwide If none found and looking nationwide, chop off the last character of code and try again looking in census region And so on



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/earth/industry/mecs_ratio.rb', line 35

def self.find_by_naics_code_and_census_region_number(code, number, original_number = number)
  if code.blank?
    record = nil
  else
    code = Industry.format_naics_code code
    candidate = where(:census_region_number => number, :naics_code => code).first
    
    if candidate.try(:energy_per_dollar_of_shipments).present?
      record = candidate
    elsif number.present?
      record = find_by_naics_code_and_census_region_number(code, nil, original_number)
    else
      record = find_by_naics_code_and_census_region_number(code[0..-2], original_number)
    end
  end
  record
end