Class: GeonamesFeature

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/generators/geonames_dump/templates/app/models/geonames_feature.rb

Direct Known Subclasses

GeonamesAdmin1, GeonamesAdmin2, GeonamesCity

Instance Method Summary collapse

Instance Method Details

#by_nameObject

Find by names



31
32
33
34
35
36
37
38
39
40
# File 'lib/generators/geonames_dump/templates/app/models/geonames_feature.rb', line 31

scope :by_name, lambda { |*queries|
  ret = self.scoped
  count = queries.count
  queries.collect.with_index do |q, idx|
    query = idx == 0 ? "#{q}" : "%#{q}%"
    ret = ret.where("asciiname_first_letters = ?", q[0...3].downcase)
    ret = ret.where("name LIKE ? or asciiname LIKE ?", query, query)
  end
  ret
}

#searchObject

Search for feature, searches might include country (separated by ‘,’)



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/generators/geonames_dump/templates/app/models/geonames_feature.rb', line 8

scope :search, lambda { |query| 
  virgule = query.include? ','

  splited = virgule ? query.split(',') : [query]

  country = virgule ? splited.last.strip : nil

  queries = virgule ? splited[0...-1] : splited
  queries = queries.join(' ').split(' ')

  ret = by_name(*queries)

  unless country.nil?
    geonames_country = GeonamesCountry.search(country).first
    ret = ret.where(:country => geonames_country.iso) unless geonames_country.nil?
  end

  ret
}

#set_asciiname_first_lettersObject

Set first letters of name into index column



45
46
47
# File 'lib/generators/geonames_dump/templates/app/models/geonames_feature.rb', line 45

def set_asciiname_first_letters
  self.asciiname_first_letters = self.asciiname[0...3].downcase unless self.asciiname.nil?
end