Sha256: 18de7cf13693655b688526155c310fe2f15b1b7007cf7b35989f27ecc1c6913b

Contents?: true

Size: 889 Bytes

Versions: 42

Compression:

Stored size: 889 Bytes

Contents

module Virgo
  module Common::SlugHistory
    extend ActiveSupport::Concern

    included do
      has_many :slug_histories, as: :record

      after_save :generate_slug_history_item

      def self.find_by_historic_slug(slug_val)
        slugs = ::Virgo::SlugHistory.where(record_type: self.to_s, slug: slug_val)
        slugs.order(created_at: :asc).last.try(:record)
      end

      def self.find_by_id_or_historic_slug!(id_val)
        record = self.find_by(slug: id_val)

        record = self.find_by(id: id_val) if record.nil?

        record = self.find_by_historic_slug(id_val) if record.nil?

        raise ActiveRecord::RecordNotFound if record.nil?

        record
      end

      private

      def generate_slug_history_item
        if slug_changed? && !slug_was.blank?
          slug_histories.create!(record: self, slug: slug_was)
        end
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
virgo-0.3.17 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.16 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.15 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.14 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.13 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.12 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.11 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.10 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.9 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.8 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.7 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.6 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.4 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.3 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.2 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3.1 app/models/concerns/virgo/common/slug_history.rb
virgo-0.3 app/models/concerns/virgo/common/slug_history.rb
virgo-0.2.9 app/models/concerns/virgo/common/slug_history.rb
virgo-0.2.8 app/models/concerns/virgo/common/slug_history.rb
virgo-0.2.7 app/models/concerns/virgo/common/slug_history.rb