Sha256: cb2d931657d46311fe43310b4045db2a6b0e44c356b20f801e0e2186b9d001d6

Contents?: true

Size: 1.54 KB

Versions: 9

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true
require 'active_model/conversion'

module Blacklight::Document
  module ActiveModelShim
    extend ActiveSupport::Concern

    include ::ActiveModel::Conversion

    class_methods do
      # This is actually an ActiveRecord method starting in Rails 5.2
      def polymorphic_name
        base_class.name
      end

      def primary_key
        unique_key
      end

      def base_class
        self
      end

      def repository
        Blacklight.default_index
      end

      def find id
        repository.find(id).documents.first
      end

      # In Rails 7.1+, needs this method
      def composite_primary_key?
        false
      end

      # In Rails 7.1+, needs this method
      def has_query_constraints?
        false
      end
    end

    ##
    # Unique ID for the document
    def id
      self[self.class.unique_key]
    end

    def ==(other)
      super ||
        (other.instance_of?(self.class) &&
          id &&
          other.id == id)
    end

    def _read_attribute(attr)
      self[attr]
    end

    ##
    # ActiveRecord::Persistence method stubs to get non-AR objects to
    # play nice with e.g. Blacklight's bookmarks
    def persisted?
      true
    end

    def destroyed?
      false
    end

    def new_record?
      false
    end

    def marked_for_destruction?
      false
    end

    ##
    # #to_partial_path is also defined in Blacklight::Document, but
    # ActiveModel::Conversion (included above) will overwrite that..
    def to_partial_path
      'catalog/document'
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
blacklight-7.40.0 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.39.0 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.38.0 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/blacklight-7.37.0/app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.37.0 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.36.2 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.36.1 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.36.0 app/models/concerns/blacklight/document/active_model_shim.rb
blacklight-7.35.0 app/models/concerns/blacklight/document/active_model_shim.rb