aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2009-08-17 20:17:40 -0300
committerEmilio Tagua <miloops@gmail.com>2009-08-17 20:17:40 -0300
commitc923409630a92d1a935699c1427702c822601165 (patch)
tree3af73ff745095a0c4ebfcb4a6a813d1c532cc4a2 /activerecord
parent4b339f44bdaa307004db2345ac9c950d9f508814 (diff)
downloadrails-c923409630a92d1a935699c1427702c822601165.tar.gz
rails-c923409630a92d1a935699c1427702c822601165.tar.bz2
rails-c923409630a92d1a935699c1427702c822601165.zip
Clean up relation joins when finding records with included associations.
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/associations.rb24
1 files changed, 12 insertions, 12 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index e4cd515f15..406f08e247 100755
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -1679,12 +1679,7 @@ module ActiveRecord
relation = arel_table((scope && scope[:from]) || options[:from])
for association in join_dependency.join_associations
- if association.relation.is_a?(Array)
- relation.join(association.relation.first, association.join_type).on(association.association_join.first)
- relation.join(association.relation.last, association.join_type).on(association.association_join.last)
- else
- relation.join(association.relation, association.join_type).on(association.association_join)
- end
+ relation = association.join_relation(relation)
end
relation.join(construct_join(options[:joins], scope))
@@ -1727,12 +1722,7 @@ module ActiveRecord
relation = arel_table(options[:from])
for association in join_dependency.join_associations
- if association.relation.is_a?(Array)
- relation.join(association.relation.first, association.join_type).on(association.association_join.first)
- relation.join(association.relation.last, association.join_type).on(association.association_join.last)
- else
- relation.join(association.relation, association.join_type).on(association.association_join)
- end
+ relation = association.join_relation(relation)
end
relation.join(construct_join(options[:joins], scope))
@@ -2230,6 +2220,16 @@ module ActiveRecord
Arel::OuterJoin
end
+ def join_relation(joining_relation, join = nil)
+ if relation.is_a?(Array)
+ joining_relation.join(relation.first, join_type).on(association_join.first)
+ joining_relation.join(relation.last, join_type).on(association_join.last)
+ else
+ joining_relation.join(relation, join_type).on(association_join)
+ end
+ joining_relation
+ end
+
protected
def aliased_table_name_for(name, suffix = nil)