Class: ApiMaker::PreloaderBelongsTo

Inherits:
PreloaderBase show all
Defined in:
lib/api_maker/preloader_belongs_to.rb

Instance Attribute Summary

Attributes inherited from PreloaderBase

#ability, #api_maker_args, #collection, #data, #locals, #records, #reflection, #reflection_name, #select, #select_columns

Instance Method Summary collapse

Methods inherited from PreloaderBase

#accessible_query, #collection_ids, #initial_join_query, #initialize, #join_query, #join_query_with_joined_name, #join_query_with_normal_name, #joined_name, #models_with_join, #unconditioned_read_access?, #underscore_name

Constructor Details

This class inherits a constructor from ApiMaker::PreloaderBase

Instance Method Details

#preloadObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/api_maker/preloader_belongs_to.rb', line 2

def preload
  models.each do |model|
    model_id = ApiMaker::PrimaryIdForModel.get(model)

    records_for_model(model).each do |record|
      record.relationships[reflection_name] = model_id
    end

    serializer = ApiMaker::Serializer.new(ability: ability, api_maker_args: api_maker_args, locals: locals, model: model, select: select&.dig(model.class))
    underscore_name = serializer.resource.underscore_name

    data.fetch(:preloaded)[underscore_name] ||= {}
    data.fetch(:preloaded).fetch(underscore_name)[model_id] ||= serializer
  end

  models
end