Class: ActiveScaffold::DataStructures::Association::Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/active_scaffold/data_structures/association/abstract.rb

Direct Known Subclasses

ActiveRecord, Mongoid

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(association) ⇒ Abstract

Returns a new instance of Abstract.



5
6
7
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 5

def initialize(association)
  @association = association
end

Instance Attribute Details

#reverse(klass = nil) ⇒ Object



105
106
107
108
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 105

def reverse(klass = nil)
  @reverse ||= inverse || get_reverse&.name unless polymorphic?
  @reverse || get_reverse(klass)&.name
end

Instance Method Details

#allow_join?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 13

def allow_join?
  !polymorphic?
end

#asObject



87
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 87

def as; end

#belongs_to?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 25

def belongs_to?
  @association.macro == :belongs_to
end

#cache_count?Boolean

Returns:

  • (Boolean)


126
127
128
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 126

def cache_count?
  collection? && !ActiveScaffold::OrmChecks.tableless?(klass) && !reverse_association&.counter_cache
end

#collection?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 45

def collection?
  has_many? || habtm?
end

#counter_cacheObject



69
70
71
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 69

def counter_cache
  @association.options[:counter_cache]
end

#counter_cache_hack?Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 93

def counter_cache_hack?
  false
end

#habtm?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 37

def habtm?
  @association.macro == :has_and_belongs_to_many
end

#has_many?Boolean

rubocop:disable Naming/PredicatePrefix

Returns:

  • (Boolean)


33
34
35
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 33

def has_many? # rubocop:disable Naming/PredicatePrefix
  @association.macro == :has_many
end

#has_one?Boolean

rubocop:disable Naming/PredicatePrefix

Returns:

  • (Boolean)


29
30
31
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 29

def has_one? # rubocop:disable Naming/PredicatePrefix
  @association.macro == :has_one
end

#inverse_for?(klass) ⇒ Boolean

Returns:

  • (Boolean)


110
111
112
113
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 110

def inverse_for?(klass)
  inverse_class = reverse_association(klass)&.inverse_klass
  inverse_class.present? && (inverse_class == klass || klass < inverse_class)
end

#klass(record = nil) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 17

def klass(record = nil)
  if polymorphic?
    record&.send(foreign_type)&.safe_constantize
  else
    @association.klass
  end
end

#nested?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 53

def nested?
  false
end

#polymorphic?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 73

def polymorphic?
  false
end

#primary_keyObject



65
66
67
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 65

def primary_key
  @association.options[:primary_key]
end

#quoted_primary_keyObject



101
102
103
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 101

def quoted_primary_key
  raise "define quoted_primary_key method in #{self.class.name} class"
end

#quoted_table_nameObject



97
98
99
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 97

def quoted_table_name
  raise "define quoted_table_name method in #{self.class.name} class"
end

#readonly?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 77

def readonly?
  false
end

#respond_to_target?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 89

def respond_to_target?
  false
end

#reverse_association(klass = nil) ⇒ Object



115
116
117
118
119
120
121
122
123
124
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 115

def reverse_association(klass = nil)
  assoc =
    if polymorphic?
      get_reverse(klass) unless klass.nil?
    else
      reverse_name = reverse(klass)
      reflect_on_association(reverse_name) if reverse_name
    end
  self.class.new(assoc) if assoc
end

#scopeObject



85
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 85

def scope; end

#singular?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 41

def singular?
  !collection?
end

#source_reflectionObject



83
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 83

def source_reflection; end

#through?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 49

def through?
  false
end

#through_collection?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 61

def through_collection?
  through? && through_reflection.collection?
end

#through_reflectionObject



81
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 81

def through_reflection; end

#through_singular?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 57

def through_singular?
  through? && !through_reflection.collection?
end