Module: Sluggable

Extended by:
ActiveSupport::Concern
Defined in:
lib/sluggable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#generate_slug(property) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/sluggable.rb', line 4

def generate_slug(property)
  generated_slug = self[property].strip.gsub(/[[:space:]]/, "-").gsub(/[^A-Za-z0-9\-]/, "").gsub(/-+/, "-").downcase

  size = nil
  counter = 0
  until size == 0
    if counter == 0
      size = self.class.where('slug LIKE ?', "#{generated_slug}").size
    else
      size = self.class.where('slug LIKE ?', "#{generated_slug}-#{counter}").size
    end
    counter+=1 if size > 0
  end

  generated_slug = "#{generated_slug}-#{counter}" if counter > 0
  self.slug = generated_slug
end

#to_paramObject



22
23
24
# File 'lib/sluggable.rb', line 22

def to_param
  self.slug
end