diff options
| author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-09 13:51:13 -0700 | 
|---|---|---|
| committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-09 13:51:13 -0700 | 
| commit | 9b15db51b78028bfecdb85595624de4b838adbd1 (patch) | |
| tree | b7b3ddc792e31fe6d21a21ab839efd3386df6f8a | |
| parent | 217aedf1bf4255696c4f95976ee5056054dc9231 (diff) | |
| download | rails-9b15db51b78028bfecdb85595624de4b838adbd1.tar.gz rails-9b15db51b78028bfecdb85595624de4b838adbd1.tar.bz2 rails-9b15db51b78028bfecdb85595624de4b838adbd1.zip  | |
remove == so we can see where walking up parents occurs
4 files changed, 15 insertions, 25 deletions
diff --git a/activerecord/lib/active_record/associations/join_dependency.rb b/activerecord/lib/active_record/associations/join_dependency.rb index b852656c85..871ca1c91d 100644 --- a/activerecord/lib/active_record/associations/join_dependency.rb +++ b/activerecord/lib/active_record/associations/join_dependency.rb @@ -69,7 +69,7 @@ module ActiveRecord          join_assocs = join_associations          associations.reject { |association| -          join_assocs.detect { |a| association == a } +          join_assocs.detect { |a| node_cmp association, a }          }.each { |association|            join_node = find_parent_node(association.parent) || @join_root            type      = association.join_type @@ -122,14 +122,19 @@ module ActiveRecord        private        def find_parent_node(parent) -        @join_root.find { |join_part| -          case parent -          when JoinBase -            parent.base_klass == join_part.base_klass -          else -            parent == join_part -          end -        } +        @join_root.find { |join_part| node_cmp parent, join_part } +      end + +      def node_cmp(parent, join_part) +        return unless parent.class == join_part.class + +        case parent +        when JoinBase +          parent.base_klass == join_part.base_klass +        else +          parent.reflection == join_part.reflection && +            node_cmp(parent.parent, join_part.parent) +        end        end        def join_base @@ -182,7 +187,7 @@ module ActiveRecord        def find_join_association(reflection, parent)          join_associations.detect { |j| -          j.reflection == reflection && j.parent == parent +          j.reflection == reflection && node_cmp(j.parent, parent)          }        end diff --git a/activerecord/lib/active_record/associations/join_dependency/join_association.rb b/activerecord/lib/active_record/associations/join_dependency/join_association.rb index e2ac892e71..3f9afa8992 100644 --- a/activerecord/lib/active_record/associations/join_dependency/join_association.rb +++ b/activerecord/lib/active_record/associations/join_dependency/join_association.rb @@ -33,12 +33,6 @@ module ActiveRecord          def parent_table_name; parent.table_name; end          alias :alias_suffix :parent_table_name -        def ==(other) -          other.class == self.class && -            other.reflection == reflection && -            other.parent == parent -        end -          def join_constraints            joins         = []            tables        = @tables.dup diff --git a/activerecord/lib/active_record/associations/join_dependency/join_base.rb b/activerecord/lib/active_record/associations/join_dependency/join_base.rb index c90ae80e4a..d3bc3dd1ad 100644 --- a/activerecord/lib/active_record/associations/join_dependency/join_base.rb +++ b/activerecord/lib/active_record/associations/join_dependency/join_base.rb @@ -8,11 +8,6 @@ module ActiveRecord            super(klass, nil)          end -        def ==(other) -          other.class == self.class && -            other.base_klass == base_klass -        end -          def aliased_prefix            "t0"          end diff --git a/activerecord/lib/active_record/associations/join_dependency/join_part.rb b/activerecord/lib/active_record/associations/join_dependency/join_part.rb index 3e9bdbfbab..b8ce8ff46d 100644 --- a/activerecord/lib/active_record/associations/join_dependency/join_part.rb +++ b/activerecord/lib/active_record/associations/join_dependency/join_part.rb @@ -48,10 +48,6 @@ module ActiveRecord            Arel::Nodes::TableAlias.new table, aliased_table_name          end -        def ==(other) -          raise NotImplementedError -        end -          # An Arel::Table for the active_record          def table            raise NotImplementedError  | 
