提交 9897f50a 编写于 作者: N Nikita Sokolov

ActiveRecord::Associations::Preloader should preload all instances of the same record

上级 65bf046f
...@@ -88,7 +88,6 @@ def preload(records, associations, preload_scope = nil) ...@@ -88,7 +88,6 @@ def preload(records, associations, preload_scope = nil)
if records.empty? if records.empty?
[] []
else else
records.uniq!
Array.wrap(associations).flat_map { |association| Array.wrap(associations).flat_map { |association|
preloaders_on association, records, preload_scope preloaders_on association, records, preload_scope
} }
......
...@@ -71,6 +71,15 @@ def test_preload_sti_middle_relation ...@@ -71,6 +71,15 @@ def test_preload_sti_middle_relation
club1.members.sort_by(&:id) club1.members.sort_by(&:id)
end end
def test_preload_multiple_instances_of_the_same_record
club = Club.create!(name: "Aaron cool banana club")
Membership.create! club: club, member: Member.create!(name: "Aaron")
Membership.create! club: club, member: Member.create!(name: "Bob")
preloaded_clubs = Club.joins(:memberships).preload(:membership).to_a
assert_no_queries { preloaded_clubs.each(&:membership) }
end
def test_ordered_has_many_through def test_ordered_has_many_through
person_prime = Class.new(ActiveRecord::Base) do person_prime = Class.new(ActiveRecord::Base) do
def self.name; "Person"; end def self.name; "Person"; end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册