跳至内容 跳至搜索
方法
C
U

实例公共方法

cache(&block)

如果 Active Record 已配置,则在块中启用查询缓存。如果没有,它将执行给定的块。

# File activerecord/lib/active_record/query_cache.rb, line 9
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)

如果 Active Record 已配置,则在块中禁用查询缓存。如果没有,它将执行给定的块。

设置 dirties: false 以防止所有连接上的查询缓存被写入操作清除。(默认情况下,写入操作会弄脏所有连接的查询缓存,以防它们是其缓存现在已过时的副本。)

# File activerecord/lib/active_record/query_cache.rb, line 28
def uncached(dirties: true, &block)
  if connected? || !configurations.empty?
    connection_pool.disable_query_cache(dirties: dirties, &block)
  else
    yield
  end
end