Class: ApiMaker::PreloaderBelongsTo

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

Instance Method Summary collapse

Constructor Details

#initialize(ability:, args:, data:, collection:, records:, reflection:, select:) ⇒ PreloaderBelongsTo

Returns a new instance of PreloaderBelongsTo.



2
3
4
5
6
7
8
9
10
11
# File 'lib/api_maker/preloader_belongs_to.rb', line 2

def initialize(ability:, args:, data:, collection:, records:, reflection:, select:)
  @ability = ability
  @args = args
  @data = data
  @collection = collection
  @reflection = reflection
  @reflection_name = @reflection.name
  @records = records
  @select = select
end

Instance Method Details

#preloadObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/api_maker/preloader_belongs_to.rb', line 13

def preload
  models.each do |model|
    records_for_model(model).each do |record|
      record.relationships[@reflection_name] = model.id
    end

    serializer = ApiMaker::Serializer.new(ability: @ability, args: @args, model: model, select: @select&.dig(model.class))
    collection_name = serializer.resource.collection_name

    @data.fetch(:included)[collection_name] ||= {}
    @data.fetch(:included).fetch(collection_name)[model.id] ||= serializer
  end

  {collection: models}
end