Module: Pseudocephalopod::ActiveRecordMethods::InstanceMethods

Defined in:
lib/pseudocephalopod/active_record_methods.rb

Instance Method Summary collapse

Instance Method Details

#autogenerate_slugObject



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

def autogenerate_slug
  generate_slug if should_generate_slug?
end

#generate_slugObject



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

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

#generate_slug!Object



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

def generate_slug!
  generate_slug
  save :validate => false
end

#has_better_slug?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/pseudocephalopod/active_record_methods.rb', line 55

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

#should_generate_slug?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/pseudocephalopod/active_record_methods.rb', line 51

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

#slug_scope_key(nested_scope = []) ⇒ Object



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

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

#to_slugObject



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

def to_slug
  cached_slug.present? ? cached_slug : id.to_s
end