Sha256: 912be908814851ebb131eebf5dc00a319dfb58bdfec4ec2df56c58223d4ac09c

Contents?: true

Size: 899 Bytes

Versions: 62

Compression:

Stored size: 899 Bytes

Contents

module Workarea
  module Navigation
    class TaxonCache
      delegate :root, to: :@taxon

      def self.set(taxon)
        new(taxon).set
      end

      def initialize(taxon)
        @taxon = taxon
      end

      def set
        if @taxon.url?
          clear_navigable
        elsif @taxon.navigable? && @taxon.navigable.present?
          set_navigable_cache_values
        end

        ensure_navigable_slug
      end

      private

      def clear_navigable
        @taxon.navigable = nil
        @taxon.navigable_slug = nil
      end

      def set_navigable_cache_values
        @taxon.name = @taxon.navigable.name if @taxon.name.blank?
        @taxon.navigable_slug = @taxon.navigable.slug
      end

      def ensure_navigable_slug
        unless @taxon.navigable_slug.nil?
          @taxon.navigable_slug = @taxon.navigable_slug.parameterize
        end
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.4.13 app/models/workarea/navigation/taxon_cache.rb
workarea-core-3.4.12 app/models/workarea/navigation/taxon_cache.rb