aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-16 13:45:25 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-09-16 13:45:25 -0300
commitae297710dd526a95bae99bd143e2bb185466cc23 (patch)
tree0114e070dbd19a6efd8dc19f611b1816bbd4f643 /activerecord/lib/active_record
parent678fdda54f391a7fec92e2c0d2a94b6e889c220c (diff)
parentfbbb6c87fd5e8fcd913c0dbf518024edd7538072 (diff)
downloadrails-ae297710dd526a95bae99bd143e2bb185466cc23.tar.gz
rails-ae297710dd526a95bae99bd143e2bb185466cc23.tar.bz2
rails-ae297710dd526a95bae99bd143e2bb185466cc23.zip
Merge pull request #12011 from jetthoughts/11963_fix_join_with_association_scope
Collapse where constraints to the Arel::Nodes::And node Conflicts: activerecord/CHANGELOG.md
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb11
1 files changed, 5 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 9916c597ee..9fcb6db726 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -882,14 +882,13 @@ module ActiveRecord
end
def collapse_wheres(arel, wheres)
- equalities = wheres.grep(Arel::Nodes::Equality)
-
- arel.where(Arel::Nodes::And.new(equalities)) unless equalities.empty?
-
- (wheres - equalities).each do |where|
+ predicates = wheres.map do |where|
+ next where if ::Arel::Nodes::Equality === where
where = Arel.sql(where) if String === where
- arel.where(Arel::Nodes::Grouping.new(where))
+ Arel::Nodes::Grouping.new(where)
end
+
+ arel.where(Arel::Nodes::And.new(predicates)) if predicates.present?
end
def build_where(opts, other = [])