Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
01777079
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,发现更多精彩内容 >>
提交
01777079
编写于
6月 06, 2014
作者:
Y
Yves Senn
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14971 from versioncontrol/#14785
Baseclass becomes! subclass
上级
aa54c91a
71c5d565
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
1 deletion
+26
-1
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+9
-0
activerecord/lib/active_record/relation.rb
activerecord/lib/active_record/relation.rb
+8
-1
activerecord/test/cases/persistence_test.rb
activerecord/test/cases/persistence_test.rb
+9
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
01777079
*
Baseclass becomes! subclass.
Before this change, a record which changed its STI type, could not be
updated.
Fixes #14785.
*Matthew Draper*, *Earl St Sauver*, *Edo Balvers*
*
Remove deprecated
`ActiveRecord::Migrator.proper_table_name`
. Use the
`proper_table_name`
instance method on
`ActiveRecord::Migration`
instead.
...
...
activerecord/lib/active_record/relation.rb
浏览文件 @
01777079
...
...
@@ -74,7 +74,14 @@ def insert(values) # :nodoc:
def
_update_record
(
values
,
id
,
id_was
)
# :nodoc:
substitutes
,
binds
=
substitute_values
values
um
=
@klass
.
unscoped
.
where
(
@klass
.
arel_table
[
@klass
.
primary_key
].
eq
(
id_was
||
id
)).
arel
.
compile_update
(
substitutes
,
@klass
.
primary_key
)
scope
=
@klass
.
unscoped
if
@klass
.
finder_needs_type_condition?
scope
.
unscope!
(
where:
@klass
.
inheritance_column
)
end
um
=
scope
.
where
(
@klass
.
arel_table
[
@klass
.
primary_key
].
eq
(
id_was
||
id
)).
arel
.
compile_update
(
substitutes
,
@klass
.
primary_key
)
@klass
.
connection
.
update
(
um
,
...
...
activerecord/test/cases/persistence_test.rb
浏览文件 @
01777079
...
...
@@ -333,6 +333,15 @@ def test_preserve_original_sti_type
assert_equal
"Reply"
,
topic
.
type
end
def
test_update_sti_subclass_type
assert_instance_of
Topic
,
topics
(
:first
)
reply
=
topics
(
:first
).
becomes!
(
Reply
)
assert_instance_of
Reply
,
reply
reply
.
save!
assert_instance_of
Reply
,
Reply
.
find
(
reply
.
id
)
end
def
test_update_after_create
klass
=
Class
.
new
(
Topic
)
do
def
self
.
name
;
'Topic'
;
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录