mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Fix multiple self-referencing eager loads failing to join multiple times
[#4679 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
committed by
Jeremy Kemper
parent
e404490f9b
commit
a4eaa1fd39
@@ -1903,7 +1903,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
other.is_a?(JoinBase) &&
|
||||
other.class == self.class &&
|
||||
other.active_record == active_record &&
|
||||
other.table_joins == table_joins
|
||||
end
|
||||
@@ -1974,7 +1974,7 @@ module ActiveRecord
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
other.is_a?(JoinAssociation) &&
|
||||
other.class == self.class &&
|
||||
other.reflection == reflection &&
|
||||
other.parent == parent
|
||||
end
|
||||
|
||||
@@ -7,9 +7,10 @@ require 'models/categorization'
|
||||
require 'models/company'
|
||||
require 'models/topic'
|
||||
require 'models/reply'
|
||||
require 'models/person'
|
||||
|
||||
class CascadedEagerLoadingTest < ActiveRecord::TestCase
|
||||
fixtures :authors, :mixins, :companies, :posts, :topics, :accounts, :comments, :categorizations
|
||||
fixtures :authors, :mixins, :companies, :posts, :topics, :accounts, :comments, :categorizations, :people
|
||||
|
||||
def test_eager_association_loading_with_cascaded_two_levels
|
||||
authors = Author.find(:all, :include=>{:posts=>:comments}, :order=>"authors.id")
|
||||
@@ -38,6 +39,13 @@ class CascadedEagerLoadingTest < ActiveRecord::TestCase
|
||||
assert_equal 9, assert_no_queries { authors[0].comments.size }
|
||||
end
|
||||
|
||||
def test_eager_association_loading_grafts_stashed_associations_to_correct_parent
|
||||
assert_nothing_raised do
|
||||
Person.eager_load(:primary_contact => :primary_contact).where('primary_contacts_people_2.first_name = ?', 'Susan').all
|
||||
end
|
||||
assert_equal people(:michael), Person.eager_load(:primary_contact => :primary_contact).where('primary_contacts_people_2.first_name = ?', 'Susan').first
|
||||
end
|
||||
|
||||
def test_eager_association_loading_with_cascaded_two_levels_with_two_has_many_associations
|
||||
authors = Author.find(:all, :include=>{:posts=>[:comments, :categorizations]}, :order=>"authors.id")
|
||||
assert_equal 2, authors.size
|
||||
|
||||
Reference in New Issue
Block a user