class JsonapiActions::EagerLoader
Attributes
includes[R]
records[R]
serializer[R]
Public Class Methods
new(records, serializer, includes)
click to toggle source
@param records [ActiveRecord::Relation] @param serializer @param includes [Array<Symbol>]
# File lib/jsonapi_actions/eager_loader.rb, line 8 def initialize(records, serializer, includes) @records = records @serializer = serializer @includes = includes end
Public Instance Methods
eager_load()
click to toggle source
@return [ActiveRecord::Relation]
# File lib/jsonapi_actions/eager_loader.rb, line 15 def eager_load serializer.relationships_to_serialize&.each do |rel| next if @records.eager_load_values.include?(rel[0]) @records = @records.eager_load(rel[0]) end includes.each do |include| rel = path_to_relationship(include.to_s.split('.')) next if @records.eager_load_values.include?(rel) @records = records.eager_load(rel) end @records end
Private Instance Methods
path_to_relationship(parts)
click to toggle source
# File lib/jsonapi_actions/eager_loader.rb, line 32 def path_to_relationship(parts) if parts.length == 1 parts[0].to_sym else parts.length == 2 { parts[0].to_sym => path_to_relationship(parts[1..-1]) } end end