Sha256: ed16bb8dac26f56e745be6b8ee5a07382f74412c126f3ae63c2d71ad749ba93f
Contents?: true
Size: 805 Bytes
Versions: 18
Compression:
Stored size: 805 Bytes
Contents
module BetterRecord module Batches def split_batches(options = {}, &block) options.assert_valid_keys(:start, :batch_size, :preserve_order) if block_given? && arel.orders.present? && options[:preserve_order] relation = self offset = options[:start] || 0 batch_size = options[:batch_size] || 1000 total = relation.count(:*) records = relation.limit(batch_size).offset(offset).to_a while records.any? records_size = records.size block.call records break if records_size < batch_size offset += batch_size records = relation.limit(batch_size).offset(offset).to_a end nil else find_in_batches(options.except(:preserve_order), &block) end end end end
Version data entries
18 entries across 18 versions & 1 rubygems