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