module Sluggi::Model
Constants
- NOT_IMPLEMENTED_MESSAGE
Public Instance Methods
to_param()
click to toggle source
# File lib/sluggi/model.rb, line 21 def to_param errors.any? ? slug_was : slug end
Private Instance Methods
clean_slug(value)
click to toggle source
# File lib/sluggi/model.rb, line 27 def clean_slug(value) value&.parameterize end
set_slug()
click to toggle source
# File lib/sluggi/model.rb, line 31 def set_slug return unless new_record? || slug_value_changed? new_slug = clean_slug(slug_value) return if new_slug.blank? self.slug = new_slug end
slug_candidates()
click to toggle source
return an array of candidate slug values Example:
[first_name, full_name, id_and_full_name]
# File lib/sluggi/model.rb, line 54 def slug_candidates raise NotImplementedError, NOT_IMPLEMENTED_MESSAGE end
slug_value()
click to toggle source
these are generally good to override:
# File lib/sluggi/model.rb, line 40 def slug_value slug_candidates.each do |item| value = item.respond_to?(:call) ? item.call : item next if value.blank? candidate = clean_slug(value) return candidate if candidate == slug return candidate unless self.class.slug_exists?(candidate) end nil end
slug_value_changed?()
click to toggle source
# File lib/sluggi/model.rb, line 58 def slug_value_changed? raise NotImplementedError, NOT_IMPLEMENTED_MESSAGE end