Fix preloading nil polymorphic belongs_to. Closes #11218 [matrix9180]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8933 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
0d70f31057
commit
558c5ff251
|
@ -162,12 +162,13 @@ module ActiveRecord
|
|||
|
||||
# Construct a mapping from klass to a list of ids to load and a mapping of those ids back to their parent_records
|
||||
records.each do |record|
|
||||
klass = record.send(polymorph_type)
|
||||
klass_id = record.send(primary_key_name)
|
||||
if klass = record.send(polymorph_type)
|
||||
klass_id = record.send(primary_key_name)
|
||||
|
||||
id_map = klasses_and_ids[klass] ||= {}
|
||||
id_list_for_klass_id = (id_map[klass_id] ||= [])
|
||||
id_list_for_klass_id << record
|
||||
id_map = klasses_and_ids[klass] ||= {}
|
||||
id_list_for_klass_id = (id_map[klass_id] ||= [])
|
||||
id_list_for_klass_id << record
|
||||
end
|
||||
end
|
||||
klasses_and_ids = klasses_and_ids.to_a
|
||||
else
|
||||
|
|
|
@ -331,7 +331,7 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
|||
assert_no_queries do
|
||||
assert_equal desired, tag_with_include.tagged_posts
|
||||
end
|
||||
assert_equal 4, tag_with_include.taggings.length
|
||||
assert_equal 5, tag_with_include.taggings.length
|
||||
end
|
||||
|
||||
def test_has_many_through_has_many_find_all
|
||||
|
@ -589,6 +589,12 @@ class AssociationsJoinModelTest < ActiveRecord::TestCase
|
|||
assert taggables.include?(posts(:welcome))
|
||||
end
|
||||
|
||||
def test_preload_nil_polymorphic_belongs_to
|
||||
assert_nothing_raised do
|
||||
taggings = Tagging.find(:all, :include => :taggable, :conditions => ['taggable_type IS NULL'])
|
||||
end
|
||||
end
|
||||
|
||||
def test_preload_polymorphic_has_many
|
||||
posts = Post.find(:all, :order => 'posts.id')
|
||||
posts_with_taggings = Post.find(:all, :include => :taggings, :order => 'posts.id')
|
||||
|
|
|
@ -22,4 +22,7 @@ godfather:
|
|||
tag_id: 1
|
||||
taggable_id: 1
|
||||
taggable_type: Item
|
||||
|
||||
|
||||
orphaned:
|
||||
id: 5
|
||||
tag_id: 1
|
||||
|
|
Loading…
Reference in New Issue