diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-10 14:12:04 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-10 14:12:04 -0700 |
commit | d20ccb7e632665b6661e82ae450e8180e3c085f9 (patch) | |
tree | 8da2dd6a203be7a24b0188883f008c954c616e67 /activerecord | |
parent | e4ec9ce78d879fc20bae0c5c7886a3bdbfab096c (diff) | |
download | rails-d20ccb7e632665b6661e82ae450e8180e3c085f9.tar.gz rails-d20ccb7e632665b6661e82ae450e8180e3c085f9.tar.bz2 rails-d20ccb7e632665b6661e82ae450e8180e3c085f9.zip |
stuff the join dependency object in the "anything goes" hash.
Diffstat (limited to 'activerecord')
4 files changed, 8 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/associations/join_dependency.rb b/activerecord/lib/active_record/associations/join_dependency.rb index fb5c7ff374..bc235cf63d 100644 --- a/activerecord/lib/active_record/associations/join_dependency.rb +++ b/activerecord/lib/active_record/associations/join_dependency.rb @@ -79,10 +79,10 @@ module ActiveRecord join_root.drop(1).map!(&:reflection) end - def join_relation(relation) + def outer_joins nodes = join_root.drop 1 nodes.each { |n| n.join_type = Arel::OuterJoin } - relation.joins(nodes) + nodes end def join_constraints diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 0132a02f83..d5eb1edf77 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -267,7 +267,7 @@ module ActiveRecord def apply_join_dependency(relation, join_dependency) relation = relation.except(:includes, :eager_load, :preload) - relation = join_dependency.join_relation(relation) + relation = relation.joins join_dependency if using_limitable_reflections?(join_dependency.reflections) relation diff --git a/activerecord/lib/active_record/relation/merger.rb b/activerecord/lib/active_record/relation/merger.rb index c05632e688..182b9ed89c 100644 --- a/activerecord/lib/active_record/relation/merger.rb +++ b/activerecord/lib/active_record/relation/merger.rb @@ -94,7 +94,7 @@ module ActiveRecord []) relation.joins! rest - @relation = join_dependency.join_relation(relation) + @relation = relation.joins join_dependency end end diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 776360fc55..364c7ec418 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -928,7 +928,7 @@ module ActiveRecord :string_join when Hash, Symbol, Array :association_join - when ActiveRecord::Associations::JoinDependency::JoinAssociation + when ActiveRecord::Associations::JoinDependency :stashed_join when Arel::Nodes::Join :join_node @@ -950,7 +950,9 @@ module ActiveRecord join_list ) - join_dependency.graft(stashed_association_joins) + stashed_association_joins.each do |dep| + join_dependency.graft dep.outer_joins + end joins = join_dependency.join_constraints |