Module: ActiveRecord::QueryCache::ClassMethods
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Extended In:
| |
Defined in: | activerecord/lib/active_record/query_cache.rb |
Overview
::ActiveRecord::Base
extends this module, so these methods are available in models.
Instance Method Summary
-
#cache(&block)
Enable the query cache within the block if Active Record is configured.
-
#uncached(dirties: true, &block)
Runs the block with the query cache disabled.
Instance Method Details
#cache(&block)
Enable the query cache within the block if Active Record is configured. If it’s not, it will execute the given block.
# File 'activerecord/lib/active_record/query_cache.rb', line 10
def cache(&block) if connected? || !configurations.empty? pool = connection_pool was_enabled = pool.query_cache_enabled begin pool.enable_query_cache(&block) ensure pool.clear_query_cache unless was_enabled end else yield end end
#uncached(dirties: true, &block)
Runs the block with the query cache disabled.
If the query cache was enabled before the block was executed, it is enabled again after it.
Set dirties: false
to prevent query caches on all connections from being cleared by write operations. (By default, write operations dirty all connections’ query caches in case they are replicas whose cache would now be outdated.)
# File 'activerecord/lib/active_record/query_cache.rb', line 33
def uncached(dirties: true, &block) if connected? || !configurations.empty? connection_pool.disable_query_cache(dirties: dirties, &block) else yield end end