- Defined in:
Statement cache is used to cache a single statement in order to avoid creating the AST again. Initializing the cache is done by passing the statement in the initialization block:
cache = ::StatementCache. do Book.where(name: "my book").limit(100) end
The cached statement is executed by using the
The relation returned by the block is cached, and for each
execute call the cached relation gets duped. Database is queried when
to_a is called on the relation.
Instance Method Summary collapse
Returns a new instance of StatementCache.
17 18 19 20
# 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
Instance Method Details
22 23 24
# File 'activerecord/lib/active_record/statement_cache.rb', line 22 def execute @relation.dup.to_a end