Skip to content

Commit

Permalink
Merge and replace multiple preloads ourselves
Browse files Browse the repository at this point in the history
Signed-off-by: Jordan Hollinger <[email protected]>
  • Loading branch information
jhollinger committed May 14, 2024
1 parent 493f1d8 commit 4eefeaf
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
3 changes: 2 additions & 1 deletion lib/blueprinter-activerecord/preloader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ def pre_render(object, blueprint, view, options)
if object.preload_blueprint_method || auto || auto_proc&.call(object, blueprint, view, options) == true
object.before_preload_blueprint = extract_preloads object
blueprint_preloads = self.class.preloads(blueprint, view, object.model)
unified_preloads = merge_values([*object.values[use], blueprint_preloads])
loader = object.preload_blueprint_method || use
object.public_send(loader, blueprint_preloads)
object.except(loader).public_send(loader, unified_preloads)
else
object
end
Expand Down
5 changes: 3 additions & 2 deletions lib/blueprinter-activerecord/query_methods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,9 @@ def preload_blueprint!(blueprint = nil, view = :default, use: :preload)

if blueprint and view
# preload right now
preloads = Preloader.preloads(blueprint, view, model)
public_send(use, preloads)
blueprint_preloads = Preloader.preloads(blueprint, view, model)
unified_preloads = Helpers.merge_values([*values[use], blueprint_preloads])
except(use).public_send(use, unified_preloads)
else
# preload during render
@values[:preload_blueprint_method] = use
Expand Down

0 comments on commit 4eefeaf

Please sign in to comment.