module AttrSlug

Public Instance Methods

attr_slug(*attrs) click to toggle source
# File lib/attr_slug/attr_slug.rb, line 13
def attr_slug(*attrs)
  class_attribute :slug_parts
  self.slug_parts = attrs || [title]
end
derive_slug() click to toggle source
# File lib/attr_slug/attr_slug.rb, line 19
def derive_slug
  return true if slug.present?

  parts = Array self.slug_parts
  derived_slug = parts.shift.to_s.parameterize
  next_number = 2

  while self.class.where(slug: derived_slug).any?
    if next_part = parts.shift
      derived_slug += "-" + next_part.to_s.parameterize
    else
      derived_slug += "-#{next_number}"
      next_number += 1
    end
  end

  self.slug = derived_slug
end