diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-12-26 17:40:30 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-12-26 17:45:01 -0700 |
commit | 50d7e448e8823ed53f7a4e8fcd12bc3cf3353cf6 (patch) | |
tree | de6dc1533482dd0a365caebb3f5ad022c63c032d /activerecord/lib/active_record/relation | |
parent | 15e2d5043f181a480f9bb3c3ff19b03505e7c4a1 (diff) | |
download | rails-50d7e448e8823ed53f7a4e8fcd12bc3cf3353cf6.tar.gz rails-50d7e448e8823ed53f7a4e8fcd12bc3cf3353cf6.tar.bz2 rails-50d7e448e8823ed53f7a4e8fcd12bc3cf3353cf6.zip |
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
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r-- | activerecord/lib/active_record/relation/batches.rb | 10 |
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 |