Module: ActiveRecord::Delegation::DelegateCache
- Included in:
- Base
- Defined in:
- lib/active_record/relation/delegation.rb
Overview
:nodoc:
Instance Method Summary collapse
- #inherited(child_class) ⇒ Object
- #initialize_relation_delegate_cache ⇒ Object
- #relation_delegate_class(klass) ⇒ Object
Instance Method Details
#inherited(child_class) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/active_record/relation/delegation.rb', line 26 def inherited(child_class) child_class.initialize_relation_delegate_cache delegate = child_class.relation_delegate_class(ActiveRecord::Associations::CollectionProxy) delegate.include ActiveRecord::Associations::CollectionProxy::DelegateExtending super end |
#initialize_relation_delegate_cache ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/active_record/relation/delegation.rb', line 8 def initialize_relation_delegate_cache @relation_delegate_cache = cache = {} [ ActiveRecord::Relation, ActiveRecord::Associations::CollectionProxy, ActiveRecord::AssociationRelation ].each do |klass| delegate = Class.new(klass) { include ClassSpecificRelation } mangled_name = klass.name.gsub("::".freeze, "_".freeze) const_set mangled_name, delegate private_constant mangled_name cache[klass] = delegate end end |
#relation_delegate_class(klass) ⇒ Object
4 5 6 |
# File 'lib/active_record/relation/delegation.rb', line 4 def relation_delegate_class(klass) @relation_delegate_cache[klass] end |