Module: Shared::Identifiers

Overview

Shared code for objects that have Identifiers.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#dwc_occurrence_idObject



84
85
86
# File 'app/models/concerns/shared/identifiers.rb', line 84

def dwc_occurrence_id
  identifiers.where('identifiers.type like ?', 'Identifier::Global::Uuid%').order('identifiers.position ASC').first&.identifier
end

#identified?Boolean

Returns:

  • (Boolean)


88
89
90
91
92
93
94
# File 'app/models/concerns/shared/identifiers.rb', line 88

def identified?
  if respond_to?(:project_id)
    identifiers.visible(self.project_id).any?
  else
    identifiers.any?
  end
end

#next_by_identifierObject



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'app/models/concerns/shared/identifiers.rb', line 96

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("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_identifierObject



111
112
113
114
115
116
117
118
119
120
121
122
# File 'app/models/concerns/shared/identifiers.rb', line 111

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)



126
127
128
# File 'app/models/concerns/shared/identifiers.rb', line 126

def reject_identifiers(attributed)
  attributed['identifier'].blank? || attributed['type'].blank?
end