Skip to content

Commit

Permalink
Clean up relation joins when finding records with included associations.
Browse files Browse the repository at this point in the history
  • Loading branch information
miloops committed Aug 17, 2009
1 parent 4b339f4 commit c923409
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions activerecord/lib/active_record/associations.rb
Expand Up @@ -1679,12 +1679,7 @@ def construct_finder_arel_with_included_associations(options, join_dependency)
relation = arel_table((scope && scope[:from]) || options[:from]) relation = arel_table((scope && scope[:from]) || options[:from])


for association in join_dependency.join_associations for association in join_dependency.join_associations
if association.relation.is_a?(Array) relation = association.join_relation(relation)
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
end end
relation.join(construct_join(options[:joins], scope)) relation.join(construct_join(options[:joins], scope))


Expand Down Expand Up @@ -1727,12 +1722,7 @@ def construct_finder_sql_for_association_limiting(options, join_dependency)
relation = arel_table(options[:from]) relation = arel_table(options[:from])


for association in join_dependency.join_associations for association in join_dependency.join_associations
if association.relation.is_a?(Array) relation = association.join_relation(relation)
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
end end
relation.join(construct_join(options[:joins], scope)) relation.join(construct_join(options[:joins], scope))


Expand Down Expand Up @@ -2230,6 +2220,16 @@ def join_type
Arel::OuterJoin Arel::OuterJoin
end 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 protected


def aliased_table_name_for(name, suffix = nil) def aliased_table_name_for(name, suffix = nil)
Expand Down

0 comments on commit c923409

Please sign in to comment.