aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/predicate_builder
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-12-26 15:55:06 -0700
committerSean Griffin <sean@thoughtbot.com>2014-12-26 15:57:18 -0700
commit6d4a19cd503b39bdbefae7c1c527b24ad2e3a36a (patch)
treebf002556781adf62fcec341cce7dd8662555a047 /activerecord/lib/active_record/relation/predicate_builder
parenteac4658bb2b4f27ab0219b4986b711801583c39f (diff)
downloadrails-6d4a19cd503b39bdbefae7c1c527b24ad2e3a36a.tar.gz
rails-6d4a19cd503b39bdbefae7c1c527b24ad2e3a36a.tar.bz2
rails-6d4a19cd503b39bdbefae7c1c527b24ad2e3a36a.zip
Eagerly cast array values passed to the predicate builder
Part of a larger refactoring to remove type casting from Arel. /cc @mrgilman [Sean Griffin & Melanie Gilman]
Diffstat (limited to 'activerecord/lib/active_record/relation/predicate_builder')
-rw-r--r--activerecord/lib/active_record/relation/predicate_builder/array_handler.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb b/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
index 4b5f5773a0..7c90563d96 100644
--- a/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
+++ b/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
@@ -19,7 +19,12 @@ module ActiveRecord
case values.length
when 0 then NullPredicate
when 1 then predicate_builder.build(attribute, values.first)
- else attribute.in(values)
+ else
+ attribute_name = attribute.name
+ casted_values = values.map do |v|
+ predicate_builder.type_cast_for_database(attribute_name, v)
+ end
+ attribute.in(casted_values)
end
unless nils.empty?