Class: GlobalID::Locator::BaseLocator
- Inherits:
-
Object
- Object
- GlobalID::Locator::BaseLocator
- Defined in:
- lib/global_id/locator.rb
Direct Known Subclasses
Instance Method Summary collapse
- #locate(gid, options = {}) ⇒ Object
- #locate_many(gids, options = {}) ⇒ Object
- #model_class(gid) ⇒ Object
Instance Method Details
#locate(gid, options = {}) ⇒ Object
211 212 213 214 215 216 217 |
# File 'lib/global_id/locator.rb', line 211 def locate(gid, = {}) return unless model_id_is_valid?(gid) model_class = gid.model_class model_class = model_class.includes([:includes]) if [:includes] model_class.find gid.model_id end |
#locate_many(gids, options = {}) ⇒ Object
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/global_id/locator.rb', line 219 def locate_many(gids, = {}) ids_by_model = Hash.new { |hash, key| hash[key] = [] } gids.each do |gid| next unless model_id_is_valid?(gid) ids_by_model[gid.model_class] << gid.model_id end records_by_model_name_and_id = {} ids_by_model.each do |model, ids| records = find_records(model, ids, ignore_missing: [:ignore_missing], includes: [:includes]) records_by_id = records.index_by do |record| record.id.is_a?(Array) ? record.id.map(&:to_s) : record.id.to_s end records_by_model_name_and_id[model.name] = records_by_id end gids.filter_map { |gid| records_by_model_name_and_id[gid.model_name][gid.model_id] } end |
#model_class(gid) ⇒ Object
207 208 209 |
# File 'lib/global_id/locator.rb', line 207 def model_class(gid) gid.model_name.constantize end |