Method: BlueprinterActiveRecord::Helpers#diff_preloads

Defined in:
lib/blueprinter-activerecord/helpers.rb

#diff_preloads(before, after, diff = [], path = []) ⇒ Array<Array<Symbol>>

Finds preloads from ‘after’ that are missing in ‘before’.

Parameters:

  • before (Hash)

    The extracted preloads from before Preloader ran

  • after (Hash)

    The extracted preloads from after Preloader ran

  • diff (Array<BlueprinterActiveRecord::MissingPreload>) (defaults to: [])

    internal use

  • path (Array<Symbol>) (defaults to: [])

    internal use

Returns:

  • (Array<Array<Symbol>>)

    the preloads missing from ‘before’ . They’re in a “path” structure, with the last element of each sub-array being the missing preload, e.g. ‘[[:widget], [:project, :company]]`



38
39
40
41
42
43
44
45
# File 'lib/blueprinter-activerecord/helpers.rb', line 38

def diff_preloads(before, after, diff = [], path = [])
  after.each_with_object(diff) do |(key, after_val), obj|
    sub_path = path + [key]
    before_val = before[key]
    obj << sub_path if before_val.nil?
    diff_preloads(before_val || {}, after_val, diff, sub_path)
  end
end