aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/batches.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/relation/batches.rb')
-rw-r--r--activerecord/lib/active_record/relation/batches.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/batches.rb b/activerecord/lib/active_record/relation/batches.rb
index ac13b37dce..9f20db831b 100644
--- a/activerecord/lib/active_record/relation/batches.rb
+++ b/activerecord/lib/active_record/relation/batches.rb
@@ -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