diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-10-07 17:29:45 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-10-08 22:12:42 +0900 |
commit | 8ad8bbaef8c4f521f292765a02ddb91e48160366 (patch) | |
tree | c74e15683649661d3340c4f0a15c148ab8b9c6c5 /activerecord/lib/active_record/associations/alias_tracker.rb | |
parent | e695086248290b186bd72134583a331d40645427 (diff) | |
download | rails-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/associations/alias_tracker.rb')
-rw-r--r-- | activerecord/lib/active_record/associations/alias_tracker.rb | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/associations/alias_tracker.rb b/activerecord/lib/active_record/associations/alias_tracker.rb index 096f016976..358cdabc7f 100644 --- a/activerecord/lib/active_record/associations/alias_tracker.rb +++ b/activerecord/lib/active_record/associations/alias_tracker.rb @@ -6,22 +6,16 @@ module ActiveRecord module Associations # Keeps track of table aliases for ActiveRecord::Associations::JoinDependency class AliasTracker # :nodoc: - def self.create(connection, initial_table) - aliases = Hash.new(0) - aliases[initial_table] = 1 - new(connection, aliases) - end - - def self.create_with_joins(connection, initial_table, joins) + def self.create(connection, initial_table, joins) if joins.empty? - create(connection, initial_table) + aliases = Hash.new(0) else aliases = Hash.new { |h, k| h[k] = initial_count_for(connection, k, joins) } - aliases[initial_table] = 1 - new(connection, aliases) end + aliases[initial_table] = 1 + new(connection, aliases) end def self.initial_count_for(connection, name, table_joins) |