Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
97f1fefc
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
97f1fefc
编写于
8月 02, 2019
作者:
R
Ryuta Kamizono
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge pull request #36834 from kamipo/deduplicate_joins
Deduplicate joins values
上级
44edb58b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
13 addition
and
3 deletion
+13
-3
activerecord/lib/active_record/relation/query_methods.rb
activerecord/lib/active_record/relation/query_methods.rb
+3
-3
activerecord/test/cases/associations/inner_join_association_test.rb
...rd/test/cases/associations/inner_join_association_test.rb
+10
-0
未找到文件。
activerecord/lib/active_record/relation/query_methods.rb
浏览文件 @
97f1fefc
...
...
@@ -1114,7 +1114,7 @@ def build_joins(manager, joins, aliases)
else
join
end
end
.
delete_if
(
&
:blank?
)
end
.
delete_if
(
&
:blank?
)
.
uniq!
while
joins
.
first
.
is_a?
(
Arel
::
Nodes
::
Join
)
join_node
=
joins
.
shift
...
...
@@ -1144,8 +1144,8 @@ def build_joins(manager, joins, aliases)
def
build_join_query
(
manager
,
buckets
,
join_type
,
aliases
)
association_joins
=
buckets
[
:association_join
]
stashed_joins
=
buckets
[
:stashed_join
]
leading_joins
=
buckets
[
:leading_join
]
.
tap
(
&
:uniq!
)
join_nodes
=
buckets
[
:join_node
]
.
tap
(
&
:uniq!
)
leading_joins
=
buckets
[
:leading_join
]
join_nodes
=
buckets
[
:join_node
]
join_sources
=
manager
.
join_sources
join_sources
.
concat
(
leading_joins
)
unless
leading_joins
.
empty?
...
...
activerecord/test/cases/associations/inner_join_association_test.rb
浏览文件 @
97f1fefc
...
...
@@ -69,6 +69,16 @@ def test_user_supplied_joins_order_should_be_preserved
assert_equal
[
expected
],
Person
.
joins
(
string_join
).
joins
(
agents
.
create_join
(
agents
,
agents
.
create_on
(
constraint
)))
end
def
test_deduplicate_joins
posts
=
Post
.
arel_table
constraint
=
posts
[
:author_id
].
eq
(
Author
.
arel_attribute
(
:id
))
authors
=
Author
.
joins
(
posts
.
create_join
(
posts
,
posts
.
create_on
(
constraint
)))
authors
=
authors
.
joins
(
:author_address
).
merge
(
authors
.
where
(
"posts.type"
:
"SpecialPost"
))
assert_equal
[
authors
(
:david
)],
authors
end
def
test_construct_finder_sql_ignores_empty_joins_hash
sql
=
Author
.
joins
({}).
to_sql
assert_no_match
(
/JOIN/i
,
sql
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录