mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
reintroduce patch from #726 to handle nested eager loading via associations
This commit is contained in:
parent
cbeeaa6ea0
commit
24b8814db0
2 changed files with 36 additions and 1 deletions
|
@ -184,7 +184,7 @@ module ActiveRecord
|
|||
|
||||
macro = join_part.reflection.macro
|
||||
if macro == :has_one
|
||||
return if record.association_cache.key?(join_part.reflection.name)
|
||||
return record.association(join_part.reflection.name).target if record.association_cache.key?(join_part.reflection.name)
|
||||
association = join_part.instantiate(row) unless row[join_part.aliased_primary_key].nil?
|
||||
set_target_and_inverse(join_part, association, record)
|
||||
else
|
||||
|
|
|
@ -252,6 +252,41 @@ class EagerAssociationTest < ActiveRecord::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts})
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_order
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :order => 'author_addresses.id')
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_order_on_association
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :order => 'authors.id')
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_order_on_nested_association
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :order => 'posts.id')
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_conditions
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :conditions => "author_addresses.id > 0")
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_conditions_on_association
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :conditions => "authors.id > 0")
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_nested_loading_through_has_one_association_with_conditions_on_nested_association
|
||||
aa = AuthorAddress.find(author_addresses(:david_address).id, :include => {:author => :posts}, :conditions => "posts.id > 0")
|
||||
assert_equal aa.author.posts.count, aa.author.posts.length
|
||||
end
|
||||
|
||||
def test_eager_association_loading_with_belongs_to_and_foreign_keys
|
||||
pets = Pet.find(:all, :include => :owner)
|
||||
assert_equal 3, pets.length
|
||||
|
|
Loading…
Reference in a new issue