Sha256: 6b1c8b552bac23159fe3e4a4c6cf239eb29ceeeab02d0f16bfa52024510a7fae

Contents?: true

Size: 1.47 KB

Versions: 38

Compression:

Stored size: 1.47 KB

Contents

class Airport < ActiveRecord::Base
  set_primary_key :iata_code
  
  # --------------------------------
  # virtual has_many association
  # has_many :segments won't work because there's no general way to specify the correct conditions
  # even if you get clever with it, like
  # has_many  :segments,
  #           :class_name => 'FlightSegment',
  #           :foreign_key => 'origin_airport_id',
  #           :conditions => 'flight_segments.destination_airport_id = #{id}'
  # you get queries like "`flight_segments`.origin_airport_id = 3654 AND (flight_segments.destination_airport_id = 3654))"
  # in which you notice the AND which must be an OR
  # and you can't just do finder_sql, because that breaks any other :select
  def segments
    FlightSegment.scoped :conditions => ['origin_airport_id = ? OR destination_airport_id = ?', id, id]
  end
  # --------------------------------
  
  belongs_to :country, :foreign_key => 'country_iso_3166_code'
  acts_as_mappable :default_units => :nms,
                   :lat_column_name => :latitude,
                   :lng_column_name => :longitude

  data_miner do
    tap "Brighter Planet's sanitized airports data", Earth.taps_server
    
    process "pull dependencies" do
      run_data_miner_on_belongs_to_associations
    end
  end
  
  def all_flights_from_here_domestic?
    !international_origin?
  end

  def all_flights_to_here_domestic?
    !international_destination?
  end
  
  def united_states?
    country == Country.united_states
  end
end

Version data entries

38 entries across 38 versions & 2 rubygems

Version Path
earth-0.0.36 lib/earth/air/airport.rb
earth-0.0.35 lib/earth/air/airport.rb
earth-0.0.34 lib/earth/air/airport.rb
earth-0.0.33 lib/earth/air/airport.rb
earth-0.0.32 lib/earth/air/airport.rb
earth-0.0.31 lib/earth/air/airport.rb
earth-0.0.30 lib/earth/air/airport.rb
earth-0.0.29 lib/earth/air/airport.rb
earth-0.0.28 lib/earth/air/airport.rb
earth-0.0.27 lib/earth/air/airport.rb
earth-0.0.26 lib/earth/air/airport.rb
earth-0.0.24 lib/earth/air/airport.rb
earth-0.0.23 lib/earth/air/airport.rb
earth-0.0.22 lib/earth/air/airport.rb
earth-0.0.21 lib/earth/air/airport.rb
earth-0.0.20 lib/earth/air/airport.rb
earth-0.0.19 lib/earth/air/airport.rb
earth-0.0.18 lib/earth/air/airport.rb