Sha256: 90c4a89da3facd313780e5f270fdb7da0db3620a5b838695f001b0376885efe8

Contents?: true

Size: 860 Bytes

Versions: 1

Compression:

Stored size: 860 Bytes

Contents

module CurationConcerns::ParentContainer
  extend ActiveSupport::Concern

  included do
    helper_method :parent
  end

  # TODO: this is slow, refactor to return a Presenter (fetch from solr)
  def parent
    @parent ||= new_or_create? ? find_parent_by_id : lookup_parent_from_child
  end

  def find_parent_by_id
    ActiveFedora::Base.find(parent_id)
  end

  def lookup_parent_from_child
    # in_objects method is inherited from Hydra::PCDM::ObjectBehavior
    return curation_concern.in_objects.first if curation_concern
    return CurationConcerns::ParentService.parent_for(@presenter.id) if @presenter
    raise "no child"
  end

  def parent_id
    @parent_id ||= new_or_create? ? params[:parent_id] : curation_concern.generic_works.in_objects.first.id
  end

  protected

    def new_or_create?
      %w(create new).include? action_name
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
curation_concerns-0.6.0 app/controllers/concerns/curation_concerns/parent_container.rb