Sha256: 1b1e4fb262d55941307799ecfd251c254a642b28c7d94b6792f89e74436c38b2

Contents?: true

Size: 944 Bytes

Versions: 10

Compression:

Stored size: 944 Bytes

Contents

# This is the parent class of DirectlyContainsAssociation and IndirectlyContainsAssociation
module ActiveFedora
  module Associations
    class ContainsAssociation < CollectionAssociation #:nodoc:

      def reader
        @records ||= ContainerProxy.new(self)
      end

      def include?(other)
        if loaded?
          target.include?(other)
        elsif container_predicate = options[:has_member_relation]
          owner.resource.query(predicate: container_predicate, object: ::RDF::URI(other.uri)).present?
        else #is_member_of_relation
          # This will force a load, so it's slowest and the least preferable option
          target.include?(other)
        end
      end

      protected

        def count_records
          load_target.size
        end

        def uri
          raise "Can't get uri. Owner isn't saved" if @owner.new_record?
          "#{@owner.uri}/#{@reflection.name}"
        end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
active-fedora-9.5.0 lib/active_fedora/associations/contains_association.rb
active-fedora-9.4.3 lib/active_fedora/associations/contains_association.rb
active-fedora-9.4.2 lib/active_fedora/associations/contains_association.rb
active-fedora-9.4.1 lib/active_fedora/associations/contains_association.rb
active-fedora-9.4.0 lib/active_fedora/associations/contains_association.rb
active-fedora-9.3.0 lib/active_fedora/associations/contains_association.rb
active-fedora-9.2.1 lib/active_fedora/associations/contains_association.rb
active-fedora-9.2.0 lib/active_fedora/associations/contains_association.rb
active-fedora-9.2.0.rc2 lib/active_fedora/associations/contains_association.rb
active-fedora-9.2.0.rc1 lib/active_fedora/associations/contains_association.rb