diff options
author | Emilio Tagua <miloops@gmail.com> | 2009-08-17 20:17:40 -0300 |
---|---|---|
committer | Emilio Tagua <miloops@gmail.com> | 2009-08-17 20:17:40 -0300 |
commit | c923409630a92d1a935699c1427702c822601165 (patch) | |
tree | 3af73ff745095a0c4ebfcb4a6a813d1c532cc4a2 /activerecord/lib/active_record | |
parent | 4b339f44bdaa307004db2345ac9c950d9f508814 (diff) | |
download | rails-c923409630a92d1a935699c1427702c822601165.tar.gz rails-c923409630a92d1a935699c1427702c822601165.tar.bz2 rails-c923409630a92d1a935699c1427702c822601165.zip |
Clean up relation joins when finding records with included associations.
Diffstat (limited to 'activerecord/lib/active_record')
-rwxr-xr-x | activerecord/lib/active_record/associations.rb | 24 |
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) |