Module: Goldiloader::RelationPatch

Defined in:
lib/goldiloader/active_record_patches.rb

Instance Method Summary collapse

Instance Method Details

#auto_include(auto_include = true) ⇒ Object



40
41
42
# File 'lib/goldiloader/active_record_patches.rb', line 40

def auto_include(auto_include = true)
  spawn.auto_include!(auto_include)
end

#auto_include!(auto_include = true) ⇒ Object



44
45
46
47
# File 'lib/goldiloader/active_record_patches.rb', line 44

def auto_include!(auto_include = true)
  self.auto_include_value = auto_include
  self
end

#auto_include_valueObject



49
50
51
52
# File 'lib/goldiloader/active_record_patches.rb', line 49

def auto_include_value
  # Note: Don't use get_value because that doesn't work properly with defaulting boolean values
  @values.fetch(:auto_include, true)
end

#auto_include_value=(value) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/goldiloader/active_record_patches.rb', line 54

def auto_include_value=(value)
  if Goldiloader::Compatibility.rails_4?
    raise ::ActiveRecord::Relation::ImmutableRelation if @loaded
    check_cached_relation
    @values[:auto_include] = value
  elsif Goldiloader::Compatibility.rails_5_0?
    assert_mutability!
    @values[:auto_include] = value
  else
    set_value(:auto_include, value)
  end
end

#exec_queriesObject



32
33
34
35
36
37
38
# File 'lib/goldiloader/active_record_patches.rb', line 32

def exec_queries
  return super if loaded? || !auto_include_value

  models = super
  Goldiloader::AutoIncludeContext.register_models(models, eager_load_values)
  models
end