Sha256: b10f382d3e792d5437fc6c9e67b65237ae50427b1dbcdcdc6e16f7e346a865d8

Contents?: true

Size: 1.56 KB

Versions: 8

Compression:

Stored size: 1.56 KB

Contents

module CurationConcern
  module CollectionModel
    extend ActiveSupport::Concern

    include Hydra::AccessControls::Permissions
    include Hydra::AccessControls::WithAccessRight
    include Sufia::Noid
    include CurationConcern::HumanReadableType

    def add_member(collectible)
      if can_add_to_members?(collectible)
        collectible.collections << self
        collectible.save
        self.members << collectible
        self.save
      end
    end

    def remove_member(collectible)
      return false unless self.members.include?(collectible)
      collectible.collections.delete(self)
      collectible.save
      self.members.delete(collectible)
      self.save
    end

    def to_s
      self.title.present? ? title : "No Title"
    end

    def to_solr(solr_doc={}, opts={})
      super
      Solrizer.set_field(solr_doc, 'generic_type', human_readable_type, :facetable)
      solr_doc
    end

    # ------------------------------------------------
    # overriding method from active-fedora:
    # lib/active_fedora/semantic_node.rb
    #
    # The purpose of this override is to ensure that
    # a collection cannot contain itself.
    #
    # TODO:  After active-fedora 7.0 is released, this
    # logic can be moved into a before_add callback.
    # ------------------------------------------------
    def add_relationship(predicate, target, literal=false)
      return if self == target
      super
    end

    private
    def can_add_to_members?(collectible)
      collectible.can_be_member_of_collection?(self)
    rescue NoMethodError
      false
    end


  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
curate-0.6.6 app/repository_models/curation_concern/collection_model.rb
curate-0.6.5 app/repository_models/curation_concern/collection_model.rb
curate-0.6.4 app/repository_models/curation_concern/collection_model.rb
curate-0.6.3 app/repository_models/curation_concern/collection_model.rb
curate-0.6.1 app/repository_models/curation_concern/collection_model.rb
curate-0.6.0 app/repository_models/curation_concern/collection_model.rb
curate-0.5.6 app/repository_models/curation_concern/collection_model.rb
curate-0.5.5 app/repository_models/curation_concern/collection_model.rb