Module: Familia::Features::ExternalIdentifier::ClassMethods

Defined in:
lib/familia/features/external_identifier.rb

Overview

ExternalIdentifier::ClassMethods

Instance Method Summary collapse

Instance Method Details

#find_by_extid(extid) ⇒ Object?

Find an object by its external identifier

Parameters:

  • extid (String)

    The external identifier to search for

Returns:

  • (Object, nil)

    The object if found, nil otherwise



140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/familia/features/external_identifier.rb', line 140

def find_by_extid(extid)
  return nil if extid.to_s.empty?

  if Familia.debug?
    reference = caller(1..1).first
    Familia.trace :FIND_BY_EXTID, Familia.dbclient, extid, reference
  end

  # Look up the primary ID from the external ID mapping
  primary_id = extid_lookup[extid]
  return nil if primary_id.nil?

  # Find the object by its primary ID
  find_by_id(primary_id)
rescue Familia::NotFound
  # If the object was deleted but mapping wasn't cleaned up
  extid_lookup.del(extid)
  nil
end