Sha256: 5c6b73ac8b7baf3587a1a9f45030204e2f13fdc4ae86276990238041dd6bdb78

Contents?: true

Size: 909 Bytes

Versions: 3

Compression:

Stored size: 909 Bytes

Contents

module Slugged
  module SlugHistory
    extend ActiveSupport::Concern
    
    included do
      after_save :record_slug_changes
      after_destroy :remove_slug_history!
    end
   
    module InstanceMethods
      
      def previous_slugs
        Slugged.previous_slugs_for(self)
      end
      
      def remove_slug_history!
        Slugged.remove_slug_history_for(self)
      end
      
      protected
      
      def record_slug_changes
        slug_column = self.cached_slug_column
        return unless send(:"#{slug_column}_changed?")
        value = send(:"#{slug_column}_was")
        Slugged.record_slug(self, value) if value.present?
      end
      
    end
    
    module ClassMethods
      
      def find_using_slug_history(slug, options = {})
        id = Slugged.last_known_slug_id(self, slug)
        id.present? ? find_by_id(id, options) : nil
      end
      
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
slugged-0.4.0 lib/slugged/slug_history.rb
slugged-0.3.3 lib/slugged/slug_history.rb
slugged-0.3.2 lib/slugged/slug_history.rb