Class: Goldiloader::AssociationInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/goldiloader/association_info.rb

Instance Method Summary collapse

Constructor Details

#initialize(association) ⇒ AssociationInfo

Returns a new instance of AssociationInfo.



6
7
8
# File 'lib/goldiloader/association_info.rb', line 6

def initialize(association)
  @association = association
end

Instance Method Details

#finder_sql?Boolean

Returns:

  • (Boolean)


10
11
12
13
# File 'lib/goldiloader/association_info.rb', line 10

def finder_sql?
  Goldiloader::Compatibility.association_finder_sql_enabled? &&
    association_options[:finder_sql].present?
end

#from?Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
36
# File 'lib/goldiloader/association_info.rb', line 30

def from?
  if ActiveRecord::VERSION::MAJOR >= 5
    association_scope && association_scope.from_clause.present?
  else
    association_scope && association_scope.from_value.present?
  end
end

#group?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/goldiloader/association_info.rb', line 38

def group?
  association_scope && association_scope.group_values.present?
end

#instance_dependent?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/goldiloader/association_info.rb', line 57

def instance_dependent?
  reflection.scope.present? && reflection.scope.arity > 0
end

#joins?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
51
# File 'lib/goldiloader/association_info.rb', line 42

def joins?
  return false unless association_scope

  num_joins = association_scope.joins_values.size
  if ActiveRecord::VERSION::MAJOR >= 5
    num_joins += association_scope.left_joins_values.size + association_scope.left_outer_joins.size
  end
  # Yuck - Through associations will always have a join for *each* 'through' table
  num_joins - num_through_joins > 0
end

#limit?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/goldiloader/association_info.rb', line 26

def limit?
  association_scope && association_scope.limit_value.present?
end

#offset?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/goldiloader/association_info.rb', line 22

def offset?
  association_scope && association_scope.offset_value.present?
end

#read_only?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/goldiloader/association_info.rb', line 18

def read_only?
  association_scope && association_scope.readonly_value.present?
end

#uniq?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/goldiloader/association_info.rb', line 53

def uniq?
  association_scope && association_scope.uniq_value
end

#unscope?Boolean

Returns:

  • (Boolean)


61
62
63
64
65
# File 'lib/goldiloader/association_info.rb', line 61

def unscope?
  Goldiloader::Compatibility.unscope_query_method_enabled? &&
      association_scope &&
      association_scope.unscope_values.present?
end