Class: OccamsRecord::EagerLoaders::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/occams-record/eager_loaders/base.rb

Overview

Base class for eagoer loading an association.

Direct Known Subclasses

BelongsTo, Habtm, HasOne

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ref, scope = nil, use: nil, as: nil) { ... } ⇒ Base

ActiveRecord::Relation on which you may call all the normal query hethods (select, where, etc) as well as any scopes you’ve defined on the model.

Yields:

  • perform eager loading on this association (optional)



22
23
24
25
26
# File 'lib/occams-record/eager_loaders/base.rb', line 22

def initialize(ref, scope = nil, use: nil, as: nil, &eval_block)
  @ref, @scope, @use, @as, @eval_block = ref, scope, use, as, eval_block
  @model = ref.klass
  @name = (as || ref.name).to_s
end

Instance Attribute Details

#eval_blockProc (readonly)



12
13
14
# File 'lib/occams-record/eager_loaders/base.rb', line 12

def eval_block
  @eval_block
end

#nameString (readonly)



8
9
10
# File 'lib/occams-record/eager_loaders/base.rb', line 8

def name
  @name
end

#useArray<Module> (readonly)



10
11
12
# File 'lib/occams-record/eager_loaders/base.rb', line 10

def use
  @use
end

Instance Method Details

#merge!(assoc_rows, rows) ⇒ Object

Merges the associated rows into the parent rows.



43
44
45
# File 'lib/occams-record/eager_loaders/base.rb', line 43

def merge!(assoc_rows, rows)
  raise 'Not Implemented'
end

#query(rows) ⇒ Object

Yield one or more ActiveRecord::Relation objects to a given block.



33
34
35
# File 'lib/occams-record/eager_loaders/base.rb', line 33

def query(rows)
  raise 'Not Implemented'
end