Module: Slugged

Extended by:
ActiveSupport::Autoload
Defined in:
lib/slugged.rb,
lib/slugged/slug.rb,
lib/slugged/scopes.rb,
lib/slugged/caching.rb,
lib/slugged/finders.rb,
lib/slugged/railtie.rb,
lib/slugged/version.rb,
lib/slugged/memory_cache.rb,
lib/slugged/slug_history.rb,
lib/slugged/active_record_methods.rb,
lib/generators/slugged/slugs/slugs_generator.rb,
lib/generators/slugged/slug_migration/slug_migration_generator.rb

Defined Under Namespace

Modules: ActiveRecordMethods, Caching, Finders, Generators, Scopes, SlugHistory, Version Classes: MemoryCache, Railtie, Slug

Constant Summary collapse

VERSION =
Version::STRING

Class Method Summary collapse

Class Method Details

.generate_uuid_slugObject



34
35
36
# File 'lib/slugged.rb', line 34

def generate_uuid_slug
  uuid.generate
end

.key_for_scope(scope) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/slugged.rb', line 54

def key_for_scope(scope)
  if scope.respond_to?(:slug_scope_key)
    scope.slug_scope_key
  elsif scope.class.respond_to?(:slug_scope_key)
    scope.class.slug_scope_key
  else
    scope.to_s
  end
end

.last_known_slug_id(scope, slug) ⇒ Object



38
39
40
# File 'lib/slugged.rb', line 38

def last_known_slug_id(scope, slug)
  Slugged::Slug.id_for(Slugged.key_for_scope(scope), slug)
end

.next_value(scope, prefix) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/slugged.rb', line 20

def next_value(scope, prefix)
  counter = 0
  slug    = self.with_counter(prefix, counter)
  while scope.with_cached_slug(slug).exists?
    counter += 1
    slug     = self.with_counter(prefix, counter)
  end
  slug
end

.previous_slugs_for(record) ⇒ Object



46
47
48
# File 'lib/slugged.rb', line 46

def previous_slugs_for(record)
  Slugged::Slug.previous_for(record)
end

.record_slug(record, slug) ⇒ Object



42
43
44
# File 'lib/slugged.rb', line 42

def record_slug(record, slug)
  Slugged::Slug.record_slug(record, slug)
end

.remove_slug_history_for(record) ⇒ Object



50
51
52
# File 'lib/slugged.rb', line 50

def remove_slug_history_for(record)
  Slugged::Slug.remove_history_for(record)
end

.uuidObject



30
31
32
# File 'lib/slugged.rb', line 30

def uuid
  @uuid ||= UUID.new
end

.with_counter(prefix, counter = 0) ⇒ Object



16
17
18
# File 'lib/slugged.rb', line 16

def with_counter(prefix, counter = 0)
  counter < 1 ? prefix : "#{prefix}--#{counter}"
end