Skip to content

Commit

Permalink
Dont try to load the record from the db if preloading didn't find any…
Browse files Browse the repository at this point in the history
…thing
  • Loading branch information
lifo committed Mar 31, 2010
1 parent 607f945 commit 5562abb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
5 changes: 5 additions & 0 deletions activerecord/lib/active_record/association_preload.rb
Expand Up @@ -159,6 +159,11 @@ def set_association_single_records(id_to_record_map, reflection_name, associated
association_proxy.__send__(:set_inverse_instance, associated_record, mapped_record)
end
end

id_to_record_map.each do |id, records|
next if seen_keys.include?(id.to_s)
records.each {|record| record.send("set_#{reflection_name}_target", nil) }
end
end

# Given a collection of ActiveRecord objects, constructs a Hash which maps
Expand Down
6 changes: 6 additions & 0 deletions activerecord/test/cases/associations/eager_test.rb
Expand Up @@ -833,4 +833,10 @@ def test_include_has_one_using_primary_key
end
end

def test_preloading_empty_polymorphic_parent
t = Tagging.create!(:taggable_type => 'Post', :taggable_id => Post.maximum(:id) + 1, :tag => tags(:general))

assert_queries(2) { @tagging = Tagging.preload(:taggable).find(t.id) }
assert_no_queries { assert ! @tagging.taggable }
end
end

0 comments on commit 5562abb

Please sign in to comment.