module PireLoader::Patches::Relation

Public Instance Methods

after_load(&blk) click to toggle source
# File lib/pire_loader/patches/relation.rb, line 54
def after_load(&blk)
  @values[:after_load] = blk
end
after_load_callback() click to toggle source

After load methods #

# File lib/pire_loader/patches/relation.rb, line 50
def after_load_callback
  @values.fetch(:after_load, nil)
end
inject_self() click to toggle source
# File lib/pire_loader/patches/relation.rb, line 69
def inject_self
  @records.each { |record| record.parent_relation = self } if lazy_load_values.present?
end
lazy_load(*args) click to toggle source

Lazy load interface #

# File lib/pire_loader/patches/relation.rb, line 9
def lazy_load(*args)
  spawn.lazy_load!(*args)
end
lazy_load_values() click to toggle source
# File lib/pire_loader/patches/relation.rb, line 21
def lazy_load_values
  @values.fetch(:lazy_load, [])
end
lazy_load_values=(value) click to toggle source
# File lib/pire_loader/patches/relation.rb, line 25
def lazy_load_values=(value)
  assert_mutability!
  @values[:lazy_load] = value
end
load(*) click to toggle source

Loading

Calls superclass method
# File lib/pire_loader/patches/relation.rb, line 62
def load(*)
  super.tap do
    inject_self
    run_after_load
  end
end
parent_relation() click to toggle source

Parent relation methods #

# File lib/pire_loader/patches/relation.rb, line 36
def parent_relation
  @values.fetch(:parent_relation, nil)
end
parent_relation=(value) click to toggle source
# File lib/pire_loader/patches/relation.rb, line 40
def parent_relation=(value)
  @values[:parent_relation] = value
end
run_after_load() click to toggle source

This can also modify the @records if the callback returns a new collection!

# File lib/pire_loader/patches/relation.rb, line 75
def run_after_load
  return unless after_load_callback

  new_records = after_load_callback.call(@records)
  @records = new_records.freeze if new_records.present?
end