Module: Railsmith::BaseService::EagerLoading::ClassMethods

Defined in:
lib/railsmith/base_service/eager_loading.rb

Overview

Class-level DSL macros for declaring eager loads on a service.

Instance Method Summary collapse

Instance Method Details

#eager_loadsObject

Returns the accumulated eager-load arguments for this class.



39
40
41
# File 'lib/railsmith/base_service/eager_loading.rb', line 39

def eager_loads
  @eager_loads || []
end

#includes(*args) ⇒ Object

Declare one or more eager loads. Multiple calls are additive.

Accepts the same arguments as ActiveRecord’s ‘includes`:

includes :foo, :bar
includes foo: :bar
includes foo: [:bar, :baz]


33
34
35
36
# File 'lib/railsmith/base_service/eager_loading.rb', line 33

def includes(*args)
  @eager_loads ||= []
  @eager_loads.concat(args)
end

#inherited(subclass) ⇒ Object



43
44
45
46
# File 'lib/railsmith/base_service/eager_loading.rb', line 43

def inherited(subclass)
  super
  subclass.instance_variable_set(:@eager_loads, eager_loads.dup)
end