Sha256: b557cd5ba9355d4fb0df2ff7a79c18f5ae42aabeb5e2f1aba1fccf78a5bb1c42

Contents?: true

Size: 1007 Bytes

Versions: 2

Compression:

Stored size: 1007 Bytes

Contents

module ActiveFedora
  module Associations
    class BasicContainsAssociation < ContainsAssociation #:nodoc:
      def find_target
        uris = owner.resource.query(predicate: options[:predicate])
                    .map { |r| r.object.to_s }

        uris.map { |object_uri| klass.find(klass.uri_to_id(object_uri)) }
      end

      def insert_record(record, force = true, validate = true)
        record.base_path_for_resource = owner.uri.to_s
        super
      end

      def add_to_target(record, skip_callbacks = false)
        record.base_path_for_resource = owner.uri.to_s
        super
      end

      def reset
        # Update the membership triples (and no other triples) on the the owner's resource
        if owner.persisted?
          pattern = ::RDF::Query::Pattern.new(predicate: options[:predicate])
          new_resource = owner.dup.reload.resource
          owner.resource.delete_insert([pattern], new_resource.query(pattern))
        end
        super
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active-fedora-11.1.4 lib/active_fedora/associations/basic_contains_association.rb
active-fedora-11.1.3 lib/active_fedora/associations/basic_contains_association.rb