class JsonApiModel::Associations::Preloader
Attributes
objects[RW]
preloads[RW]
Public Class Methods
new( objects, preloads )
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 13 def initialize( objects, preloads ) @objects = Array( objects ).compact @preloads = preloads validate_homogenity! end
preload( objects, *preloads )
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 6 def preload( objects, *preloads ) new( objects, preloads ).preload end
Public Instance Methods
preload()
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 20 def preload @preloads.each do | preload | case preload when Hash preload.each do | preload, subpreloads | preloader = Preloaders.preloader_for( @objects, preload ) subobjects = preloader.load preloader.assign subobjects subobjects.preload( subpreloads ) end else Preloaders.preloader_for( @objects, preload ).fetch end end @objects end
Private Instance Methods
homogeneous?()
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 52 def homogeneous? @objects.all? do |obj| obj.is_a?(object_class) end end
object_class()
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 48 def object_class @object_class ||= @objects.first.class end
validate_homogenity!()
click to toggle source
# File lib/json_api_model/associations/preloader.rb, line 42 def validate_homogenity! unless homogeneous? raise "JsonApiModel::Associations::Preloader.preload called with a heterogeneous array of objects." end end