123456789_123456789_123456789_123456789_123456789_

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

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.

[ GitHub ]

  
# 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.)

[ GitHub ]

  
# 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