Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
4f46ef36
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,发现更多精彩内容 >>
提交
4f46ef36
编写于
6月 22, 2013
作者:
J
Jon Leighton
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #10796 from neerajdotname/10669
flatten merged join_values before building the joins
上级
88beaee6
32420bd4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
19 addition
and
2 deletion
+19
-2
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+10
-0
activerecord/lib/active_record/relation/query_methods.rb
activerecord/lib/active_record/relation/query_methods.rb
+1
-1
activerecord/test/cases/relation_test.rb
activerecord/test/cases/relation_test.rb
+8
-1
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
4f46ef36
*
Flatten merged join_values before building the joins.
While joining_values special treatment is given to string values.
By flattening the array it ensures that string values are detected
as strings and not arrays.
Fixes #10669.
*Neeraj Singh and iwiznia*
*
Do not load all child records for inverse case.
currently `post.comments.find(Comment.first.id)` would load all
...
...
activerecord/lib/active_record/relation/query_methods.rb
浏览文件 @
4f46ef36
...
...
@@ -802,7 +802,7 @@ def arel
def
build_arel
arel
=
Arel
::
SelectManager
.
new
(
table
.
engine
,
table
)
build_joins
(
arel
,
joins_values
)
unless
joins_values
.
empty?
build_joins
(
arel
,
joins_values
.
flatten
)
unless
joins_values
.
empty?
collapse_wheres
(
arel
,
(
where_values
-
[
''
]).
uniq
)
...
...
activerecord/test/cases/relation_test.rb
浏览文件 @
4f46ef36
...
...
@@ -176,7 +176,7 @@ def test_references_values_dont_duplicate
assert_equal
[
'foo = bar'
],
relation
.
where_values
end
def
test_relation_merging_with_merged_joins
def
test_relation_merging_with_merged_joins
_as_symbols
special_comments_with_ratings
=
SpecialComment
.
joins
(
:ratings
)
posts_with_special_comments_with_ratings
=
Post
.
group
(
"posts.id"
).
joins
(
:special_comments
).
merge
(
special_comments_with_ratings
)
assert_equal
3
,
authors
(
:david
).
posts
.
merge
(
posts_with_special_comments_with_ratings
).
count
.
length
...
...
@@ -190,6 +190,13 @@ def test_respond_to_for_non_selected_element
assert_equal
false
,
post
.
respond_to?
(
:title
),
"post should not respond_to?(:body) since invoking it raises exception"
end
def
test_relation_merging_with_merged_joins_as_strings
join_string
=
"LEFT OUTER JOIN
#{
Rating
.
quoted_table_name
}
ON
#{
SpecialComment
.
quoted_table_name
}
.id =
#{
Rating
.
quoted_table_name
}
.comment_id"
special_comments_with_ratings
=
SpecialComment
.
joins
join_string
posts_with_special_comments_with_ratings
=
Post
.
group
(
"posts.id"
).
joins
(
:special_comments
).
merge
(
special_comments_with_ratings
)
assert_equal
3
,
authors
(
:david
).
posts
.
merge
(
posts_with_special_comments_with_ratings
).
count
.
length
end
end
class
RelationMutationTest
<
ActiveSupport
::
TestCase
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录