aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-11-17 17:28:40 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2010-11-17 17:28:40 -0800
commit80d9b724c3f2f49ce99f1c41eddbebe7cf16686d (patch)
treee9f81b1fb767c5719c6aa58eef7fb9241ca2b7bb /activerecord
parentc6bfd6802ae4c8e179e875a707ec42bf73d13a20 (diff)
downloadrails-80d9b724c3f2f49ce99f1c41eddbebe7cf16686d.tar.gz
rails-80d9b724c3f2f49ce99f1c41eddbebe7cf16686d.tar.bz2
rails-80d9b724c3f2f49ce99f1c41eddbebe7cf16686d.zip
group can be done by left side only
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb9
1 files changed, 3 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 07ca2e2088..9e7503a60d 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -199,15 +199,12 @@ module ActiveRecord
equalities = wheres.grep(Arel::Nodes::Equality)
groups = equalities.group_by do |equality|
- left = equality.left
- # table, column
- [left.relation.name, left.name]
+ equality.left
end
groups.each do |_, eqls|
- head = eqls.first
- test = eqls.inject(head) do |memo, expr|
- expr == head ? expr : memo.or(expr)
+ test = eqls.inject(eqls.shift) do |memo, expr|
+ memo.or(expr)
end
arel = arel.where(test)
end