module JsonApiPreloader::Core
Public Class Methods
included(base)
click to toggle source
# File lib/json_api_preloader/core.rb, line 6 def self.included(base) base.extend(ClassMethods) base.class_attribute(:builder_configuration) end
Private Instance Methods
modify_params(hsh, ary, parent)
click to toggle source
# File lib/json_api_preloader/core.rb, line 37 def modify_params(hsh, ary, parent) association = ary.shift return unless association if parent new_parent = AssociationsChecker.new(parent, association).call return unless new_parent end modify_params(hsh[association], ary, new_parent) end
nested_resources(included:, parent:)
click to toggle source
# File lib/json_api_preloader/core.rb, line 49 def nested_resources(included:, parent:) default_hash = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) } result = included.each_with_object(default_hash) do |param, hash| array = param.split('.').map(&:to_sym) modify_params(hash, array, parent) end result end
parent_model()
click to toggle source
# File lib/json_api_preloader/core.rb, line 62 def parent_model return unless preload_models? config = builder_configuration.detect { |conf| conf[:action] == action_name.to_sym } return unless config config[:model_name] end
preload_models?()
click to toggle source
# File lib/json_api_preloader/core.rb, line 58 def preload_models? @preload_models ||= ModelsPreloadChecker.preload_models? end
preloaded_query()
click to toggle source
# File lib/json_api_preloader/core.rb, line 27 def preloaded_query included = params[:include] return {} if included.nil? || included.empty? nested_resources( included: included.split(','), parent: parent_model ) end