Inform Arel that we don't need additional type casting in batching

Part of the larger refactoring to remove type casting from Arel. We can
inform it that we already have the right type by wrapping the value in
an `Arel::Nodes::Quoted`. This commit can be reverted when we have
removed type casting from Arel in Rail 5.1
This commit is contained in:
Sean Griffin 2014-12-26 17:40:30 -07:00
parent 15e2d5043f
commit 50d7e448e8
1 changed files with 8 additions and 2 deletions

View File

@ -102,9 +102,15 @@ module ActiveRecord
start = options[:start]
batch_size = options[:batch_size] || 1000
if start
# FIXME: Remove this when type casting is removed from Arel
# (Rails 5.1). We can pass start directly instead.
quoted_start = Arel::Nodes::Quoted.new(start)
end
unless block_given?
return to_enum(:find_in_batches, options) do
total = start ? where(table[primary_key].gteq(start)).size : size
total = start ? where(table[primary_key].gteq(quoted_start)).size : size
(total - 1).div(batch_size) + 1
end
end
@ -114,7 +120,7 @@ module ActiveRecord
end
relation = relation.reorder(batch_order).limit(batch_size)
records = start ? relation.where(table[primary_key].gteq(start)).to_a : relation.to_a
records = start ? relation.where(table[primary_key].gteq(quoted_start)).to_a : relation.to_a
while records.any?
records_size = records.size