Module: Slugged::ActiveRecordMethods::InstanceMethods

Defined in:
lib/slugged/active_record_methods.rb

Instance Method Summary collapse

Instance Method Details

#autogenerate_slugObject



51
52
53
54
55
56
57
# File 'lib/slugged/active_record_methods.rb', line 51

def autogenerate_slug
  if should_convert_cached_slug?
    convert_cached_slug
  else
    generate_slug if should_generate_slug?
  end
end

#convert_cached_slugObject



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

def convert_cached_slug
  write_attribute self.cached_slug_column, self.class.slug_value_for(send(self.cached_slug_column))
end

#generate_slugObject



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/slugged/active_record_methods.rb', line 29

def generate_slug
  slug_value = self.class.slug_value_for(send(self.slug_source))
  if slug_value.present?
    scope = self.class.other_than(self).slug_scope_relation(self)
    slug_value = Slugged.next_value(scope, slug_value)
    write_attribute self.cached_slug_column, slug_value
  elsif self.default_uuid_slug
    write_attribute self.cached_slug_column, Slugged.generate_uuid_slug
  else
    write_attribute self.cached_slug_column, nil
  end
end

#generate_slug!Object



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

def generate_slug!
  generate_slug
  save :validate => false
end

#has_better_slug?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/slugged/active_record_methods.rb', line 67

def has_better_slug?
  found_via_slug.present? && found_via_slug != to_slug
end

#should_convert_cached_slug?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/slugged/active_record_methods.rb', line 59

def should_convert_cached_slug?
  send(:"#{self.cached_slug_column}_changed?") && !send(self.cached_slug_column).blank? && self.editable?
end

#should_generate_slug?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/slugged/active_record_methods.rb', line 63

def should_generate_slug?
  send(self.cached_slug_column).blank? || (self.sync_slugs && send(:"#{self.slug_source}_changed?")) && !should_convert_cached_slug?
end

#slug_scope_key(nested_scope = []) ⇒ Object



71
72
73
# File 'lib/slugged/active_record_methods.rb', line 71

def slug_scope_key(nested_scope = [])
  self.class.slug_scope_key(nested_scope)
end

#to_slugObject



24
25
26
27
# File 'lib/slugged/active_record_methods.rb', line 24

def to_slug
  cached_value = send cached_slug_column
  cached_value.present? ? cached_value : id.to_s
end