Class: Brainstem::Preloader
- Inherits:
-
Object
- Object
- Brainstem::Preloader
- Defined in:
- lib/brainstem/preloader.rb
Overview
Takes a list of arbitrarily nested objects, compacts them, de-duplicates them, and passes them to ActiveRecord to preload.
The following is considered a valid data structure:
[:workspaces, {"workspaces" => [:projects], "users" }
Which will produce the following for ActiveRecord:
{"workspaces" => [:projects], "users" => []}
Instance Attribute Summary collapse
-
#models ⇒ Object
Instance API.
-
#preload_method ⇒ Object
writeonly
Sets the attribute preload_method.
-
#preloads ⇒ Object
Instance API.
-
#reflections ⇒ Object
Instance API.
-
#valid_preloads ⇒ Object
readonly
Instance API.
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(models, preloads, reflections, preload_method = nil) ⇒ Preloader
constructor
A new instance of Preloader.
Constructor Details
#initialize(models, preloads, reflections, preload_method = nil) ⇒ Preloader
Returns a new instance of Preloader.
36 37 38 39 40 41 42 |
# File 'lib/brainstem/preloader.rb', line 36 def initialize(models, preloads, reflections, preload_method = nil) self.models = models self.preloads = preloads.compact self.reflections = reflections self.preload_method = preload_method self.valid_preloads = {} end |
Instance Attribute Details
#models ⇒ Object
Instance API
27 28 29 |
# File 'lib/brainstem/preloader.rb', line 27 def models @models end |
#preload_method=(value) ⇒ Object
Sets the attribute preload_method
34 35 36 |
# File 'lib/brainstem/preloader.rb', line 34 def preload_method=(value) @preload_method = value end |
#preloads ⇒ Object
Instance API
27 28 29 |
# File 'lib/brainstem/preloader.rb', line 27 def preloads @preloads end |
#reflections ⇒ Object
Instance API
27 28 29 |
# File 'lib/brainstem/preloader.rb', line 27 def reflections @reflections end |
#valid_preloads ⇒ Object
Instance API
27 28 29 |
# File 'lib/brainstem/preloader.rb', line 27 def valid_preloads @valid_preloads end |
Class Method Details
.preload(*args) ⇒ Object
19 20 21 |
# File 'lib/brainstem/preloader.rb', line 19 def preload(*args) new(*args).call end |
Instance Method Details
#call ⇒ Object
44 45 46 47 |
# File 'lib/brainstem/preloader.rb', line 44 def call clean! preload! end |