module Slugworth
Constants
- VERSION
Public Instance Methods
to_param()
click to toggle source
# File lib/slugworth.rb, line 29 def to_param slug end
Private Instance Methods
add_slug()
click to toggle source
# File lib/slugworth.rb, line 35 def add_slug self.slug = processed_slug if generate_slug? end
generate_slug?()
click to toggle source
# File lib/slugworth.rb, line 39 def generate_slug? !slug.present? || slug_updatable && changes[slug_attribute].present? end
matching_slugs()
click to toggle source
# File lib/slugworth.rb, line 67 def matching_slugs table = self.class.arel_table primary_key = self.class.primary_key query = table[:slug].matches("#{parameterized_slug}%") query = query.and(table[primary_key].not_eq(read_attribute(primary_key))) unless new_record? Array.wrap(slug_scope).each do |scope| query = query.and(table[scope].eq(read_attribute(scope))) end self.class.where(query).pluck(:slug) end
parameterized_slug()
click to toggle source
# File lib/slugworth.rb, line 51 def parameterized_slug slug_attribute_value.parameterize end
process_incremental_slug()
click to toggle source
# File lib/slugworth.rb, line 55 def process_incremental_slug slugs = matching_slugs if slugs.include?(parameterized_slug) (1..slugs.size).each do |i| incremented_slug = "#{parameterized_slug}-#{i}" return incremented_slug unless slugs.include?(incremented_slug) end else parameterized_slug end end
processed_slug()
click to toggle source
# File lib/slugworth.rb, line 47 def processed_slug slug_incremental ? process_incremental_slug : parameterized_slug end
slug_attribute_value()
click to toggle source
# File lib/slugworth.rb, line 43 def slug_attribute_value public_send(slug_attribute) end