class GlobalID::Locator::BaseLocator

Public Instance Methods

locate(gid) click to toggle source
# File lib/global_id/locator.rb, line 129
def locate(gid)
  gid.model_class.find gid.model_id
end
locate_many(gids, options = {}) click to toggle source
# File lib/global_id/locator.rb, line 133
def locate_many(gids, options = {})
  models_and_ids  = gids.collect { |gid| [ gid.model_class, gid.model_id ] }
  ids_by_model    = models_and_ids.group_by(&:first)
  loaded_by_model = Hash[ids_by_model.map { |model, ids|
    [ model, find_records(model, ids.map(&:last), ignore_missing: options[:ignore_missing]).index_by { |record| record.id.to_s } ]
  }]

  models_and_ids.collect { |(model, id)| loaded_by_model[model][id] }.compact
end

Private Instance Methods

find_records(model_class, ids, options) click to toggle source
# File lib/global_id/locator.rb, line 144
def find_records(model_class, ids, options)
  if options[:ignore_missing]
    model_class.where(id: ids)
  else
    model_class.find(ids)
  end
end