Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
3c3a344a
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,发现更多精彩内容 >>
提交
3c3a344a
编写于
10月 13, 2014
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17232 from Agis-/issue-17209
Autosave callbacks shouldn't be `after_save` callbacks
上级
d02adfaa
719d52db
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
28 addition
and
1 deletion
+28
-1
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+7
-0
activerecord/lib/active_record/autosave_association.rb
activerecord/lib/active_record/autosave_association.rb
+3
-1
activerecord/test/cases/autosave_association_test.rb
activerecord/test/cases/autosave_association_test.rb
+9
-0
activerecord/test/models/post.rb
activerecord/test/models/post.rb
+9
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
3c3a344a
*
Fix regression causing
`after_create`
callbacks to run before associated
records are autosaved.
Fixes #17209.
*Agis Anastasopoulos*
*
Honor overridden
`rack.test`
in Rack environment for the connection
management middleware.
...
...
activerecord/lib/active_record/autosave_association.rb
浏览文件 @
3c3a344a
...
...
@@ -184,7 +184,9 @@ def add_autosave_association_callbacks(reflection)
before_save
:before_save_collection_association
define_non_cyclic_method
(
save_method
)
{
save_collection_association
(
reflection
)
}
after_save
save_method
# Doesn't use after_save as that would save associations added in after_create/after_update twice
after_create
save_method
after_update
save_method
elsif
reflection
.
has_one?
define_method
(
save_method
)
{
save_has_one_association
(
reflection
)
}
unless
method_defined?
(
save_method
)
# Configures two callbacks instead of a single after_save so that
...
...
activerecord/test/cases/autosave_association_test.rb
浏览文件 @
3c3a344a
require
'cases/helper'
require
'models/bird'
require
'models/comment'
require
'models/company'
require
'models/customer'
require
'models/developer'
...
...
@@ -616,6 +617,14 @@ def test_autosave_new_record_on_has_many_can_be_disabled_per_relationship
firm
.
save!
assert
!
account
.
persisted?
end
def
test_autosave_new_record_with_after_create_callback
post
=
PostWithAfterCreateCallback
.
new
(
title:
'Captain Murphy'
,
body:
'is back'
)
post
.
comments
.
build
(
body:
'foo'
)
post
.
save!
assert_not_nil
post
.
author_id
end
end
class
TestDestroyAsPartOfAutosaveAssociation
<
ActiveRecord
::
TestCase
...
...
activerecord/test/models/post.rb
浏览文件 @
3c3a344a
...
...
@@ -219,6 +219,15 @@ class PostThatLoadsCommentsInAnAfterSaveHook < ActiveRecord::Base
end
end
class
PostWithAfterCreateCallback
<
ActiveRecord
::
Base
self
.
table_name
=
'posts'
has_many
:comments
,
foreign_key: :post_id
after_create
do
|
post
|
update_attribute
(
:author_id
,
comments
.
first
.
id
)
end
end
class
PostWithCommentWithDefaultScopeReferencesAssociation
<
ActiveRecord
::
Base
self
.
table_name
=
'posts'
has_many
:comment_with_default_scope_references_associations
,
foreign_key: :post_id
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录