Method: OccamsRecord::Query#find_in_batches

Defined in:
lib/occams-record/query.rb

#find_in_batches(batch_size: 1000, use_transaction: true, append_order_by: nil) {|OccamsRecord::Results::Row| ... } ⇒ Enumerator

Load records in batches of N and yield each batch to a block if given. If no block is given, returns an Enumerator.

NOTE Unlike ActiveRecord’s find_each, ORDER BY is respected. The primary key will be appended to the ORDER BY clause to help ensure consistent batches. Additionally, it will be run inside of a transaction.



204
205
206
207
208
209
210
211
212
213
# File 'lib/occams-record/query.rb', line 204

def find_in_batches(batch_size: 1000, use_transaction: true, append_order_by: nil)
  enum = Batches::OffsetLimit::Scoped
    .new(model, scope, use: @use, query_logger: @query_logger, eager_loaders: @eager_loaders)
    .enum(batch_size: batch_size, use_transaction: use_transaction, append_order_by: append_order_by)
  if block_given?
    enum.each { |batch| yield batch }
  else
    enum
  end
end