提交 c917fb7c 编写于 作者: M Matt Jones

WIP: pass existing joins to construct_join_dependency

上级 654be5f0
......@@ -32,8 +32,18 @@ def self.initial_count_for(connection, name, table_joins)
join.left.downcase.scan(
/join(?:\s+\w+)?\s+(\S+\s+)?#{quoted_name}\son/
).size
else
elsif join.respond_to? :left
join.left.table_name == name ? 1 : 0
else
# this branch is reached by two tests:
#
# activerecord/test/cases/associations/cascaded_eager_loading_test.rb:37
# with :posts
#
# activerecord/test/cases/associations/eager_test.rb:1133
# with :comments
#
0
end
end
......
......@@ -336,7 +336,16 @@ def offset_index
end
def find_with_associations
join_dependency = construct_join_dependency
# NOTE: the JoinDependency constructed here needs to know about
# any joins already present in `self`, so pass them in
#
# failing to do so means that in cases like activerecord/test/cases/associations/inner_join_association_test.rb:136
# incorrect SQL is generated. In that case, the join dependency for
# SpecialCategorizations is constructed without knowledge of the
# preexisting join in joins_values to categorizations (by way of
# the `has_many :through` for categories).
#
join_dependency = construct_join_dependency(joins_values)
aliases = join_dependency.aliases
relation = select aliases.columns
......
......@@ -126,4 +126,14 @@ def test_find_with_conditions_on_through_reflection
categories = author.categories.includes(:special_categorizations).references(:special_categorizations).to_a
assert_equal 2, categories.size
end
test "the correct records are loaded when including an aliased association" do
author = Author.create! name: "Jon"
author.categories.create! name: 'Not Special'
author.special_categories.create! name: 'Special'
categories = author.categories.eager_load(:special_categorizations).order(:name).to_a
assert_equal 0, categories.first.special_categorizations.size
assert_equal 1, categories.second.special_categorizations.size
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册