Sha256: 4fd4e9c07437d338ec60c7b381216662540474cdb52c0e67c94a1b7261547cec

Contents?: true

Size: 991 Bytes

Versions: 9

Compression:

Stored size: 991 Bytes

Contents

module Hyrax
  module Actors
    class AddAsMemberOfCollectionsActor < AbstractActor
      def create(attributes)
        collection_ids = attributes.delete(:member_of_collection_ids)
        add_to_collections(collection_ids) && next_actor.create(attributes)
      end

      def update(attributes)
        collection_ids = attributes.delete(:member_of_collection_ids)
        add_to_collections(collection_ids) && next_actor.update(attributes)
      end

      private

        # Maps from collection ids to collection objects
        def add_to_collections(collection_ids)
          return true unless collection_ids
          # grab/save collections this user has no edit access to
          other_collections = curation_concern.member_of_collections.select { |coll| ability.cannot?(:edit, coll) }
          curation_concern.member_of_collections = ::Collection.find(collection_ids)
          curation_concern.member_of_collections.concat other_collections
        end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
hyrax-1.1.1 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.1.0 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.5 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.4 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.3 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.2 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.1 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.0.rc2 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb
hyrax-1.0.0.rc1 app/actors/hyrax/actors/add_as_member_of_collections_actor.rb