aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-12-29 11:21:56 -0700
committerSean Griffin <sean@thoughtbot.com>2014-12-29 11:21:56 -0700
commitf916aa247bddba0c58c50822886bc29e8556df76 (patch)
treed27270ccdebfcb74efe073e8a9785238f090f155 /activerecord/lib/active_record/relation
parent7931c96338353adc0ebfc780769ef3cd06ab0d79 (diff)
downloadrails-f916aa247bddba0c58c50822886bc29e8556df76.tar.gz
rails-f916aa247bddba0c58c50822886bc29e8556df76.tar.bz2
rails-f916aa247bddba0c58c50822886bc29e8556df76.zip
Remove all cases of manuallly wrapping `Arel::Nodes::Quoted`
This is no longer required now that we are injecting a type caster object into the Arel table, with the exception of uniqueness validations. Since it calls `ConnectionAdapter#type_cast`, the value has already been cast for the database. We don't want Arel to attempt to cast it further, so we need to continue wrapping it in a quoted node. This can potentially go away when this validator is refactored to make better use of `where` or the predicate builder.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/batches.rb23
1 files changed, 4 insertions, 19 deletions
diff --git a/activerecord/lib/active_record/relation/batches.rb b/activerecord/lib/active_record/relation/batches.rb
index f7b2167ae8..4f0502ae75 100644
--- a/activerecord/lib/active_record/relation/batches.rb
+++ b/activerecord/lib/active_record/relation/batches.rb
@@ -52,12 +52,7 @@ module ActiveRecord
end
else
enum_for :find_each, options do
- # FIXME: Remove this when type casting is removed from Arel
- # (Rails 5.1). We can pass start directly instead.
- if options[:start]
- quoted_start = Arel::Nodes::Quoted.new(options[:start])
- end
- options[:start] ? where(table[primary_key].gteq(quoted_start)).size : size
+ options[:start] ? where(table[primary_key].gteq(options[:start])).size : size
end
end
end
@@ -107,15 +102,9 @@ 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(quoted_start)).size : size
+ total = start ? where(table[primary_key].gteq(start)).size : size
(total - 1).div(batch_size) + 1
end
end
@@ -125,7 +114,7 @@ module ActiveRecord
end
relation = relation.reorder(batch_order).limit(batch_size)
- records = start ? relation.where(table[primary_key].gteq(quoted_start)).to_a : relation.to_a
+ records = start ? relation.where(table[primary_key].gteq(start)).to_a : relation.to_a
while records.any?
records_size = records.size
@@ -136,11 +125,7 @@ module ActiveRecord
break if records_size < batch_size
- # FIXME: Remove this when type casting is removed from Arel
- # (Rails 5.1). We can pass the offset directly instead.
- quoted_offset = Arel::Nodes::Quoted.new(primary_key_offset)
-
- records = relation.where(table[primary_key].gt(quoted_offset)).to_a
+ records = relation.where(table[primary_key].gt(primary_key_offset)).to_a
end
end