Sha256: d441cd1eefe396bbf8df4a16c912caabbee5f715d1a03b9ea02bc4b006e3d685

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

module CurationConcern
  # The CurationConcern base actor should respond to three primary actions:
  # * #create
  # * #update
  # * #delete
  class BaseActor
    attr_reader :curation_concern, :user, :attributes
    def initialize(curation_concern, user, input_attributes)
      @curation_concern = curation_concern
      @user = user
      @attributes = input_attributes.dup
      @visibility = attributes[:visibility]
    end

    def create!
      curation_concern.apply_depositor_metadata(user.user_key)
      curation_concern.creator = user.name
      curation_concern.date_uploaded = Date.today
      save
    end

    def update!
      save
    end

    def save
      curation_concern.attributes = attributes
      curation_concern.date_modified = Date.today
      curation_concern.set_visibility(visibility)
      curation_concern.save!
    end
    protected :save

    attr_reader :visibility
    protected :visibility

    def visibility_may_have_changed?
      !!@visibility
    end
    protected :visibility_may_have_changed?

    def attach_file(generic_file, file_to_attach)
      ActiveSupport::Deprecation.warn("removing #{self.class}#attach_file, use CurationConcern.attach_file instead")
      CurationConcern.attach_file(generic_file, user, file_to_attach)
    end
    protected :attach_file
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
curate-0.3.2 app/services/curation_concern/base_actor.rb
curate-0.3.1 app/services/curation_concern/base_actor.rb
curate-0.2.0 app/services/curation_concern/base_actor.rb
curate-0.1.3 app/services/curation_concern/base_actor.rb
curate-0.1.2 app/services/curation_concern/base_actor.rb
curate-0.1.1 app/services/curation_concern/base_actor.rb
curate-0.1.0 app/services/curation_concern/base_actor.rb