Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
ae48c65e
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,发现更多精彩内容 >>
提交
ae48c65e
编写于
1月 11, 2018
作者:
R
Ryuta Kamizono
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #23146 from piotrj/issue_18424
When deleting through records, take into account association conditions
上级
f30f20cc
eebcebde
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
29 addition
and
0 deletion
+29
-0
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+6
-0
activerecord/lib/active_record/associations/has_many_through_association.rb
...ctive_record/associations/has_many_through_association.rb
+1
-0
activerecord/test/cases/associations/has_many_through_associations_test.rb
.../cases/associations/has_many_through_associations_test.rb
+19
-0
activerecord/test/models/author.rb
activerecord/test/models/author.rb
+3
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
ae48c65e
*
Take into account association conditions when deleting through records.
Fixes #18424.
*Piotr Jakubowski*
*
Fix nested
`has_many :through`
associations on unpersisted parent instances.
*
Fix nested
`has_many :through`
associations on unpersisted parent instances.
For example, if you have
For example, if you have
...
...
activerecord/lib/active_record/associations/has_many_through_association.rb
浏览文件 @
ae48c65e
...
@@ -140,6 +140,7 @@ def delete_records(records, method)
...
@@ -140,6 +140,7 @@ def delete_records(records, method)
scope
=
through_association
.
scope
scope
=
through_association
.
scope
scope
.
where!
construct_join_attributes
(
*
records
)
scope
.
where!
construct_join_attributes
(
*
records
)
scope
=
scope
.
where
(
through_scope_attributes
)
case
method
case
method
when
:destroy
when
:destroy
...
...
activerecord/test/cases/associations/has_many_through_associations_test.rb
浏览文件 @
ae48c65e
...
@@ -1308,6 +1308,25 @@ def test_incorrectly_ordered_through_associations
...
@@ -1308,6 +1308,25 @@ def test_incorrectly_ordered_through_associations
end
end
end
end
def
test_has_many_through_update_ids_with_conditions
author
=
Author
.
create!
(
name:
"Bill"
)
category
=
categories
(
:general
)
author
.
update
(
special_categories_with_condition_ids:
[
category
.
id
],
nonspecial_categories_with_condition_ids:
[
category
.
id
]
)
assert_equal
[
category
.
id
],
author
.
special_categories_with_condition_ids
assert_equal
[
category
.
id
],
author
.
nonspecial_categories_with_condition_ids
author
.
update
(
nonspecial_categories_with_condition_ids:
[])
author
.
reload
assert_equal
[
category
.
id
],
author
.
special_categories_with_condition_ids
assert_equal
[],
author
.
nonspecial_categories_with_condition_ids
end
def
test_single_has_many_through_association_with_unpersisted_parent_instance
def
test_single_has_many_through_association_with_unpersisted_parent_instance
post_with_single_has_many_through
=
Class
.
new
(
Post
)
do
post_with_single_has_many_through
=
Class
.
new
(
Post
)
do
def
self
.
name
;
"PostWithSingleHasManyThrough"
;
end
def
self
.
name
;
"PostWithSingleHasManyThrough"
;
end
...
...
activerecord/test/models/author.rb
浏览文件 @
ae48c65e
...
@@ -88,6 +88,9 @@ def ratings
...
@@ -88,6 +88,9 @@ def ratings
has_many
:special_categories
,
through: :special_categorizations
,
source: :category
has_many
:special_categories
,
through: :special_categorizations
,
source: :category
has_one
:special_category
,
through: :special_categorizations
,
source: :category
has_one
:special_category
,
through: :special_categorizations
,
source: :category
has_many
:special_categories_with_conditions
,
->
{
where
(
categorizations:
{
special:
true
})
},
through: :categorizations
,
source: :category
has_many
:nonspecial_categories_with_conditions
,
->
{
where
(
categorizations:
{
special:
false
})
},
through: :categorizations
,
source: :category
has_many
:categories_like_general
,
->
{
where
(
name:
"General"
)
},
through: :categorizations
,
source: :category
,
class_name:
"Category"
has_many
:categories_like_general
,
->
{
where
(
name:
"General"
)
},
through: :categorizations
,
source: :category
,
class_name:
"Category"
has_many
:categorized_posts
,
through: :categorizations
,
source: :post
has_many
:categorized_posts
,
through: :categorizations
,
source: :post
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录