Module: Switchman::ActiveRecord::Reflection::AssociationScopeCache
- Defined in:
- lib/switchman/active_record/reflection.rb
Instance Method Summary collapse
-
#association_scope_cache(klass, owner, &block) ⇒ Object
cache association scopes by shard.
- #initialize(*args) ⇒ Object
Instance Method Details
#association_scope_cache(klass, owner, &block) ⇒ Object
cache association scopes by shard. this technically belongs on AssociationReflection, but we put it on ThroughReflection as well, instead of delegating to its internal HasManyAssociation, losing its proper ‘klass`
31 32 33 34 35 36 |
# File 'lib/switchman/active_record/reflection.rb', line 31 def association_scope_cache(klass, owner, &block) key = self key = [key, owner._read_attribute(@foreign_type)] if polymorphic? key = [key, shard(owner).id].flatten klass.cached_find_by_statement(key, &block) end |
#initialize(*args) ⇒ Object
18 19 20 21 22 23 24 25 |
# File 'lib/switchman/active_record/reflection.rb', line 18 def initialize(*args) super # on ThroughReflection, these won't be initialized (cause it doesn't # inherit from AssociationReflection), so make sure they're # initialized here @association_scope_cache ||= {} @scope_lock ||= Mutex.new end |