aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/predicate_builder
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2017-04-15 12:37:42 +0200
committerGitHub <noreply@github.com>2017-04-15 12:37:42 +0200
commit258f629a267a49532e668ef0756a89ea33a4b15b (patch)
tree36519b23408099de052c01af81d535fb094cb4a5 /activerecord/lib/active_record/relation/predicate_builder
parent2e07392c7c6421998ef2199fe8e6d83e4cbb09bb (diff)
parentc1a2cbf12821508b2db12d98fa327fd1ea7561bc (diff)
downloadrails-258f629a267a49532e668ef0756a89ea33a4b15b.tar.gz
rails-258f629a267a49532e668ef0756a89ea33a4b15b.tar.bz2
rails-258f629a267a49532e668ef0756a89ea33a4b15b.zip
Merge pull request #28768 from kamipo/early_return_array_handler
Early return in `PredicateBuilder::ArrayHandler`
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, 3 insertions, 4 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 54e9910598..1068e700e2 100644
--- a/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
+++ b/activerecord/lib/active_record/relation/predicate_builder/array_handler.rb
@@ -6,12 +6,11 @@ module ActiveRecord
end
def call(attribute, value)
+ return attribute.in([]) if value.empty?
+ return queries_predicates(value) if value.all? { |v| v.is_a?(Hash) }
+
values = value.map { |x| x.is_a?(Base) ? x.id : x }
nils, values = values.partition(&:nil?)
-
- return attribute.in([]) if values.empty? && nils.empty?
- return queries_predicates(values) if nils.empty? && values.all? { |v| v.is_a?(Hash) }
-
ranges, values = values.partition { |v| v.is_a?(Range) }
values_predicate =