class GlobalID::Locator::BaseLocator
def find_records(model_class, ids, options)
def find_records(model_class, ids, options) if options[:ignore_missing] model_class.where(id: ids) else model_class.find(ids) end end
def locate(gid)
def locate(gid) gid.model_class.find gid.model_id end
def locate_many(gids, options = {})
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