class UnLocode::Locode

Public Class Methods

find_by_function(function, limit = 10) click to toggle source
# File lib/un_locode/locode.rb, line 22
def self.find_by_function function, limit = 10
  raise "Unsupported Locode Function! Should be one of #{UnLocode::FUNCTIONS.join(' ')}." unless UnLocode::FUNCTIONS.include?(function)
  includes(:country).where(function => true).limit(limit)
end
find_by_fuzzy_name(name, limit = 10) click to toggle source
# File lib/un_locode/locode.rb, line 14
def self.find_by_fuzzy_name name, limit = 10
  includes(:country).where('name like ? or
         name_wo_diacritics like ? or
         alternative_name like ? or
         alternative_name_wo_diacritics like ?',
        "%#{name}%", "%#{name}%", "%#{name}%", "%#{name}%").limit(limit)
end
find_by_locode(locode) click to toggle source
# File lib/un_locode/locode.rb, line 31
def self.find_by_locode(locode)
  locode = locode.gsub(' ', '').upcase
  includes(:country).find_by(city_code: locode[2..4], countries: { code: locode[0..1] })
end
find_by_name_and_function(name, function, limit = 10) click to toggle source
# File lib/un_locode/locode.rb, line 27
def self.find_by_name_and_function name, function, limit = 10
  find_by_fuzzy_name(name).find_by_function(function, limit)
end

Public Instance Methods

as_json(options = {}) click to toggle source
Calls superclass method
# File lib/un_locode/locode.rb, line 36
def as_json options = {}
  super(options.merge!(except: [:id, :country_id])).merge('country' => country.as_json)
end