Sha256: dba77f23424eaa8f4d21293a6c78b1744eaa95b304a4c65f9fa1ac36dd6b35c1

Contents?: true

Size: 1.5 KB

Versions: 5

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true
module Sipity
  # A proxy for the entity that is being processed via workflows.
  #
  # By using a proxy, we need not worry about polluting the proxy's concerns
  # with things related to workflow processing.
  #
  # The goal is to keep this behavior separate, so that we can possibly
  # extract the information.
  # @example To get the Sipity::Entity for a work
  #   work = GenericWork.first
  #   work_global_id = Hyrax::GlobalID(work).to_s
  #   => "gid://whatever/GenericWork/3x816m604"
  #   Sipity::Entity.where(proxy_for_global_id: work_global_id).first
  #   => #<Sipity::Entity id: 1, proxy_for_global_id: "gid://whatever/GenericWork/3x816m604",
  # workflow_id: 8, workflow_state_id: 20, created_at: "2017-07-07 13:39:42", updated_at: "2017-07-07 13:39:42">
  class Entity < ActiveRecord::Base
    self.table_name = 'sipity_entities'

    belongs_to :workflow, class_name: 'Sipity::Workflow'
    belongs_to :workflow_state,
               optional: true,
               class_name: 'Sipity::WorkflowState'

    has_many :entity_specific_responsibilities, dependent: :destroy, class_name: 'Sipity::EntitySpecificResponsibility'

    has_many :comments,
             dependent: :destroy,
             class_name: 'Sipity::Comment'

    def workflow_state_name
      workflow_state&.name
    end

    # Defines the method #workflow_name
    delegate :name, to: :workflow, prefix: :workflow

    def proxy_for
      @proxy_for ||= GlobalID::Locator.locate(proxy_for_global_id)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
hyrax-3.0.2 app/models/sipity/entity.rb
hyrax-3.0.1 app/models/sipity/entity.rb
hyrax-3.0.0 app/models/sipity/entity.rb
hyrax-3.0.0.pre.rc4 app/models/sipity/entity.rb
hyrax-3.0.0.pre.rc3 app/models/sipity/entity.rb