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