Class: Serega::SeregaPlugins::ActiverecordPreloads::Preloader
- Inherits:
-
Object
- Object
- Serega::SeregaPlugins::ActiverecordPreloads::Preloader
- Defined in:
- lib/serega/plugins/activerecord_preloads/lib/preloader.rb
Overview
Handles preloads for different types of initial records
Class Method Summary collapse
-
.handlers ⇒ Array
Returns handlers which will try to check if serialized object fits for preloading using this handler.
-
.preload(object, preloads) ⇒ Object
Preloads associations to records.
Class Method Details
.handlers ⇒ Array
Returns handlers which will try to check if serialized object fits for preloading using this handler
28 29 30 31 32 33 34 35 |
# File 'lib/serega/plugins/activerecord_preloads/lib/preloader.rb', line 28 def handlers @handlers ||= [ ActiverecordRelation, ActiverecordObject, ActiverecordArray, ActiverecordEnumerator ].freeze end |
.preload(object, preloads) ⇒ Object
Preloads associations to records
16 17 18 19 20 21 22 23 |
# File 'lib/serega/plugins/activerecord_preloads/lib/preloader.rb', line 16 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 |