Class: ActiveScaffold::DataStructures::Association::Abstract
- Defined in:
- lib/active_scaffold/data_structures/association/abstract.rb
Direct Known Subclasses
Instance Attribute Summary collapse
Instance Method Summary collapse
- #allow_join? ⇒ Boolean
- #as ⇒ Object
- #belongs_to? ⇒ Boolean
- #cache_count? ⇒ Boolean
- #collection? ⇒ Boolean
- #counter_cache ⇒ Object
- #counter_cache_hack? ⇒ Boolean
- #habtm? ⇒ Boolean
-
#has_many? ⇒ Boolean
rubocop:disable Naming/PredicatePrefix.
-
#has_one? ⇒ Boolean
rubocop:disable Naming/PredicatePrefix.
-
#initialize(association) ⇒ Abstract
constructor
A new instance of Abstract.
- #inverse_for?(klass) ⇒ Boolean
- #klass(record = nil) ⇒ Object
- #nested? ⇒ Boolean
- #polymorphic? ⇒ Boolean
- #primary_key ⇒ Object
- #quoted_primary_key ⇒ Object
- #quoted_table_name ⇒ Object
- #readonly? ⇒ Boolean
- #respond_to_target? ⇒ Boolean
- #reverse_association(klass = nil) ⇒ Object
- #scope ⇒ Object
- #singular? ⇒ Boolean
- #source_reflection ⇒ Object
- #through? ⇒ Boolean
- #through_collection? ⇒ Boolean
- #through_reflection ⇒ Object
- #through_singular? ⇒ Boolean
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
13 14 15 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 13 def allow_join? !polymorphic? end |
#as ⇒ Object
87 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 87 def as; end |
#belongs_to? ⇒ 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
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
45 46 47 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 45 def collection? has_many? || habtm? end |
#counter_cache ⇒ Object
69 70 71 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 69 def counter_cache @association.[:counter_cache] end |
#counter_cache_hack? ⇒ Boolean
93 94 95 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 93 def counter_cache_hack? false end |
#habtm? ⇒ 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
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
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
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
53 54 55 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 53 def nested? false end |
#polymorphic? ⇒ Boolean
73 74 75 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 73 def polymorphic? false end |
#primary_key ⇒ Object
65 66 67 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 65 def primary_key @association.[:primary_key] end |
#quoted_primary_key ⇒ Object
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_name ⇒ Object
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
77 78 79 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 77 def readonly? false end |
#respond_to_target? ⇒ 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 |
#scope ⇒ Object
85 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 85 def scope; end |
#singular? ⇒ Boolean
41 42 43 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 41 def singular? !collection? end |
#source_reflection ⇒ Object
83 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 83 def source_reflection; end |
#through? ⇒ Boolean
49 50 51 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 49 def through? false end |
#through_collection? ⇒ Boolean
61 62 63 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 61 def through_collection? through? && through_reflection.collection? end |
#through_reflection ⇒ Object
81 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 81 def through_reflection; end |
#through_singular? ⇒ Boolean
57 58 59 |
# File 'lib/active_scaffold/data_structures/association/abstract.rb', line 57 def through_singular? through? && !through_reflection.collection? end |