module Sluggable

Public Instance Methods

append_count(slug, count) click to toggle source
# File lib/sluggable_gem_mweick.rb, line 26
def append_count(slug, count)
  if slug.split('-').last.to_i != 0
    slug.split('-').slice(0...-1).join('-') + '-' + count.to_s
  else
    slug + '-' + count.to_s
  end
end
generate_slug!() click to toggle source
# File lib/sluggable_gem_mweick.rb, line 10
def generate_slug!
  slug = to_unique_slug(self.title)
  post = Post.find_by slug: slug
  count = 2
  while post && post != self
    slug = append_count(slug, count)
    post = Post.find_by slug: slug
    count += 1
  end
  self.slug = slug
end
to_unique_slug(title) click to toggle source
# File lib/sluggable_gem_mweick.rb, line 22
def to_unique_slug(title)
  slug = title.strip.gsub(/\s*[^A-Za-z0-9]\s*/, '-').gsub(/-+/, '-').downcase
end