класс ActiveRecord::StatementCache
Кэш запросов используется для кэширования одного запроса, чтобы избежать повторного создания абстрактного синтаксического дерева. Инициализация кэша выполняется путём передачи запроса в блоке инициализации:
cache = ActiveRecord::StatementCache.new do Book.where(name: "my book").limit(100) end
Кэшированный запрос выполняется с помощью метода execute:
cache.execute
Связь, возвращённая блоком, кэшируется, и для каждого вызова execute кэшированная связь дублируется. База данных запрашивается, когда для связи вызывается метод to_a.
Публичные методы класса
# File activerecord/lib/active_record/statement_cache.rb, line 17
def initialize
@relation = yield
raise ArgumentError.new("Statement cannot be nil") if @relation.nil?
end Публичные методы экземпляра
# File activerecord/lib/active_record/statement_cache.rb, line 22 def execute @relation.dup.to_a end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.