aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-10-07 17:29:45 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-10-08 22:12:42 +0900
commit8ad8bbaef8c4f521f292765a02ddb91e48160366 (patch)
treec74e15683649661d3340c4f0a15c148ab8b9c6c5 /activerecord/lib/active_record/relation
parente695086248290b186bd72134583a331d40645427 (diff)
downloadrails-8ad8bbaef8c4f521f292765a02ddb91e48160366.tar.gz
rails-8ad8bbaef8c4f521f292765a02ddb91e48160366.tar.bz2
rails-8ad8bbaef8c4f521f292765a02ddb91e48160366.zip
Decouple building `AliasTracker` from `JoinDependency`
This is preparation to respect parent relation's alias tracking for fixing #30681.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/finder_methods.rb4
-rw-r--r--activerecord/lib/active_record/relation/merger.rb2
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb2
3 files changed, 5 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index c92d5a52f4..5d4b549470 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -390,7 +390,9 @@ module ActiveRecord
def construct_join_dependency(joins = [], eager_loading: true)
including = eager_load_values + includes_values
- ActiveRecord::Associations::JoinDependency.new(klass, table, including, joins, eager_loading: eager_loading)
+ ActiveRecord::Associations::JoinDependency.new(
+ klass, table, including, alias_tracker(joins), eager_loading: eager_loading
+ )
end
def construct_relation_for_association_calculations
diff --git a/activerecord/lib/active_record/relation/merger.rb b/activerecord/lib/active_record/relation/merger.rb
index 03824ffff9..ebc72d28fd 100644
--- a/activerecord/lib/active_record/relation/merger.rb
+++ b/activerecord/lib/active_record/relation/merger.rb
@@ -122,7 +122,7 @@ module ActiveRecord
end
join_dependency = ActiveRecord::Associations::JoinDependency.new(
- other.klass, other.table, joins_dependency, []
+ other.klass, other.table, joins_dependency, other.alias_tracker
)
relation.joins! rest
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index e76ad05b71..fb5beeffef 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -1013,7 +1013,7 @@ module ActiveRecord
join_list = join_nodes + convert_join_strings_to_ast(manager, string_joins)
join_dependency = ActiveRecord::Associations::JoinDependency.new(
- klass, table, association_joins, join_list
+ klass, table, association_joins, alias_tracker(join_list)
)
joins = join_dependency.join_constraints(stashed_association_joins, join_type)