Sha256: 9525e92bd6cf0db8f765b3f23474cbf7a0fb609d4adfc8b5790680062e6c1630

Contents?: true

Size: 1.56 KB

Versions: 12

Compression:

Stored size: 1.56 KB

Contents

module Hyrax
  module FileSet
    module BelongsToWorks
      extend ActiveSupport::Concern

      included do
        before_destroy :remove_representative_relationship
      end

      def parents
        in_works
      end

      # Returns the first parent object
      # This is a hack to handle things like FileSets inheriting access controls from their parent.  (see Hyrax::ParentContainer in app/controllers/concerns/curation_concers/parent_container.rb)
      def parent
        parents.first
      end

      # Returns the id of first parent object
      # This is a hack to handle things like FileSets inheriting access controls from their parent.  (see Hyrax::ParentContainer in app/controllers/concerns/curation_concers/parent_container.rb)
      delegate :id, to: :parent, prefix: true

      # Files with sibling relationships
      # Returns all FileSets aggregated by any of the parent objects that
      # aggregate the current object
      def related_files
        parent_objects = parents
        return [] if parent_objects.empty?
        parent_objects.flat_map do |work|
          work.file_sets.reject do |file_set|
            file_set.id == id
          end
        end
      end

      # If any parent objects are pointing at this object as their
      # representative, remove that pointer.
      def remove_representative_relationship
        parent_objects = parents
        return if parent_objects.empty?
        parent_objects.each do |work|
          work.update(representative_id: nil) if work.representative_id == id
        end
      end
    end
  end
end
\

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hyrax-2.0.3 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.2 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.1 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.rc3 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.rc2 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.rc1 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.beta5 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.beta4 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.beta3 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.beta2 app/models/concerns/hyrax/file_set/belongs_to_works.rb
hyrax-2.0.0.beta1 app/models/concerns/hyrax/file_set/belongs_to_works.rb