class JsonApiResource::Associations::Preloader
Constants
- PREOLOADERS_FOR_ASSOCIATIONS
Public Class Methods
preload( objects, preloads )
click to toggle source
# File lib/json_api_resource/associations/preloader.rb, line 7 def preload ( objects, preloads ) objects = Array(objects) preloads = Array(preloads) return objects if objects.empty? preloads.each do |preload| association = association_for objects, preload preloader = preloader_for association preloader.preload( objects ) end end
Private Class Methods
association_for( objects, preload )
click to toggle source
# File lib/json_api_resource/associations/preloader.rb, line 26 def association_for( objects, preload ) # let's assert the objects are of a single class verify_object_homogenity!(objects) obj_class = objects.first.class association = obj_class._associations[preload] raise_if association.nil?, "'#{preload}' is not a valid association on #{obj_class}" association end
preloader_for( association )
click to toggle source
# File lib/json_api_resource/associations/preloader.rb, line 38 def preloader_for( association ) preloader_class = PREOLOADERS_FOR_ASSOCIATIONS[association.type] preloader_class.new association end
verify_object_homogenity!( objects )
click to toggle source
# File lib/json_api_resource/associations/preloader.rb, line 43 def verify_object_homogenity!( objects ) obj_class = objects.first.class objects.each do |obj| raise_unless obj.is_a?(obj_class), "JsonApiResource::Associations::Preloader.preload called with a heterogenious array of objects." end end