module Slugable::ActsAsSlugable::LocalInstanceMethods
Private Instance Methods
create_slug()
click to toggle source
# File lib/acts_as_slugable/acts_as_slugable_4.rb, line 57 def create_slug return if self.errors.count > 0 if self[slug_column].to_s.empty? test_string = self[source_column] proposed_slug = test_string.strip.downcase.gsub(/['"#\$,.!?%@()]+/, '') proposed_slug = proposed_slug.gsub(/&/, 'and') proposed_slug = proposed_slug.gsub(/[\W]+/, '-') proposed_slug = proposed_slug.gsub(/-{2}/, '-') suffix = '' existing = true acts_as_slugable_class.transaction do while existing != nil existing = acts_as_slugable_class.where(["#{slug_column} = ? and #{slug_scope_condition}", proposed_slug + suffix]).first if existing if suffix.empty? suffix = "-0" else suffix.succ! end end end end self[slug_column] = proposed_slug + suffix end end