Module: Serega::SeregaPlugins::ActiverecordPreloads::Preloader::ClassMethods

Included in:
Serega::SeregaPlugins::ActiverecordPreloads::Preloader
Defined in:
lib/serega/plugins/activerecord_preloads/lib/preloader.rb

Instance Method Summary collapse

Instance Method Details

#handlersObject



17
18
19
20
21
22
23
24
# File 'lib/serega/plugins/activerecord_preloads/lib/preloader.rb', line 17

def handlers
  @handlers ||= [
    ActiverecordRelation,
    ActiverecordObject,
    ActiverecordArray,
    ActiverecordEnumerator
  ].freeze
end

#preload(object, preloads) ⇒ Object

Raises:



8
9
10
11
12
13
14
15
# File 'lib/serega/plugins/activerecord_preloads/lib/preloader.rb', line 8

def preload(object, preloads)
  return object if object.nil? || (object.is_a?(Array) && object.empty?) || preloads.empty?

  preload_handler = handlers.find { |handler| handler.fit?(object) }
  raise SeregaError, "Can't preload #{preloads.inspect} to #{object.inspect}" unless preload_handler

  preload_handler.preload(object, preloads)
end