Module: Shared::Identifiers
- Extended by:
- ActiveSupport::Concern
- Included in:
- AssertedDistribution, BiologicalAssociation, BiologicalAssociationsGraph, CharacterState, CollectionProfile, CommonName, Container, Descriptor, Document, Documentation, Extract, GeneAttribute, GeographicArea, Image, Loan, Observation, ObservationMatrixColumnItem, ObservationMatrixRow, ObservationMatrixRowItem, Organization, Otu, Person, Repository, Sequence, SequenceRelationship, Serial, Source, User
- Defined in:
- app/models/concerns/shared/identifiers.rb
Overview
Shared code for objects that have Identifiers.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #dwc_occurrence_id ⇒ Object
- #identified? ⇒ Boolean
- #next_by_identifier ⇒ Object
- #previous_by_identifier ⇒ Object
- #reject_identifiers(attributed) ⇒ Object protected
Instance Method Details
#dwc_occurrence_id ⇒ Object
83 84 85 |
# File 'app/models/concerns/shared/identifiers.rb', line 83 def dwc_occurrence_id identifiers.where('identifiers.type like ?', 'Identifier::Global::Uuid%').order('identifiers.position ASC').first&.identifier end |
#identified? ⇒ Boolean
87 88 89 90 91 92 93 |
# File 'app/models/concerns/shared/identifiers.rb', line 87 def identified? if respond_to?(:project_id) identifiers.visible(self.project_id).any? else identifiers.any? end end |
#next_by_identifier ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'app/models/concerns/shared/identifiers.rb', line 95 def next_by_identifier # TODO: Memoize i so it can be shared with previous etc. # LIke attr_accessor @navigating_identifier if @navigating_identifier ||= identifiers.where("identifiers.type ILIKE 'Identifier::Local%'").order(:position).first self.class .where(project_id: project_id) .where.not(id: id) .with_identifier_type_and_namespace_method(navigating_identifier.type, navigating_identifier.namespace_id, 'ASC') .where('cached_numeric_identifier > ?', navigating_identifier.cached_numeric_identifier) .first else nil end end |
#previous_by_identifier ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'app/models/concerns/shared/identifiers.rb', line 110 def previous_by_identifier if @navigating_identifier ||= identifiers.where("type ILIKE 'Identifier::Local%'").order(:position).first self.class .where(project_id: project_id) .where.not(id: id) .with_identifier_type_and_namespace_method(navigating_identifier.type, navigating_identifier.namespace_id, 'DESC') .where('cached_numeric_identifier < ?', navigating_identifier.cached_numeric_identifier) .first else nil end end |
#reject_identifiers(attributed) ⇒ Object (protected)
125 126 127 |
# File 'app/models/concerns/shared/identifiers.rb', line 125 def reject_identifiers(attributed) attributed['identifier'].blank? || attributed['type'].blank? end |