app/models/concerns/geopolitocracy.rb in geopolitical-0.8.4 vs app/models/concerns/geopolitocracy.rb in geopolitical-0.8.6

- old
+ new

@@ -5,26 +5,39 @@ included do field :name, type: String, localize: true field :abbr, type: String field :gid, type: Integer # geonames id - field :slug, type: String - field :ascii, type: String field :code, type: String + field :slug, type: String # , default: -> { name } + field :ascii, type: String - before_validation :set_slug - end + validates :name, presence: true + validates :slug, presence: true, uniqueness: true - def to_s - name || slug + index slug: 1 + index name: 1 + + before_validation :ensure_slug + + scope :ordered, -> { order_by(name: 1) } + + def self.search(txt) + txt.gsub!(/\s/, '-') + where(slug: /^#{ActiveSupport::Inflector.transliterate(txt)}/i) + end end - def set_slug + def ensure_slug self.slug ||= name end def slug=(txt) return unless txt - self[:slug] = txt.encode(Encoding::ISO_8859_1) - .gsub(/\s/, '-').downcase + self[:slug] = ActiveSupport::Inflector.transliterate(txt) + .gsub(/\s/, '-').downcase + end + + def to_s + name || slug end end