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 a0454dc commit 0e57c70
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
5 changes: 5 additions & 0 deletions activerecord/lib/active_record/association_preload.rb
Expand Up @@ -157,6 +157,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
8 changes: 7 additions & 1 deletion activerecord/test/cases/associations/eager_test.rb
Expand Up @@ -830,5 +830,11 @@ def test_include_has_one_using_primary_key
assert_equal expected, firm.account_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 0e57c70

Please sign in to comment.