Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
82b0ce9c
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,发现更多精彩内容 >>
提交
82b0ce9c
编写于
1月 07, 2011
作者:
J
Jon Leighton
提交者:
Aaron Patterson
1月 07, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor HasOneAssociation#replace
上级
5b28e525
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
26 deletion
+22
-26
activerecord/lib/active_record/associations/has_one_association.rb
...ord/lib/active_record/associations/has_one_association.rb
+22
-26
未找到文件。
activerecord/lib/active_record/associations/has_one_association.rb
浏览文件 @
82b0ce9c
...
...
@@ -14,41 +14,27 @@ def build(attributes = {})
new_record
(
:build_association
,
attributes
)
end
def
replace
(
obj
,
save
=
true
)
def
replace
(
record
,
save
=
true
)
record
=
record
.
target
if
AssociationProxy
===
record
raise_on_type_mismatch
(
record
)
unless
record
.
nil?
load_target
unless
@target
.
nil?
||
@target
==
obj
if
@reflection
.
options
[
:dependent
]
&&
save
case
@reflection
.
options
[
:dependent
]
when
:delete
@target
.
delete
if
@target
.
persisted?
when
:destroy
@target
.
destroy
if
@target
.
persisted?
when
:nullify
@target
[
@reflection
.
foreign_key
]
=
nil
@target
.
save
if
@owner
.
persisted?
&&
@target
.
persisted?
end
else
@target
[
@reflection
.
foreign_key
]
=
nil
@target
.
save
if
@owner
.
persisted?
&&
@target
.
persisted?
end
if
@target
&&
@target
!=
record
remove_target
(
save
&&
@reflection
.
options
[
:dependent
])
end
if
obj
.
nil?
@target
=
nil
else
raise_on_type_mismatch
(
obj
)
set_owner_attributes
(
obj
)
@target
=
(
AssociationProxy
===
obj
?
obj
.
target
:
obj
)
if
record
set_owner_attributes
(
record
)
set_inverse_instance
(
record
)
end
set_inverse_instance
(
obj
)
@target
=
record
loaded
unless
!
@owner
.
persisted?
||
obj
.
nil?
||
!
save
re
turn
(
obj
.
save
?
self
:
false
)
if
@owner
.
persisted?
&&
record
&&
save
re
cord
.
save
&&
self
else
re
turn
(
obj
.
nil?
?
nil
:
self
)
re
cord
&&
self
end
end
...
...
@@ -68,6 +54,16 @@ def new_record(method, attributes)
replace
(
record
,
false
)
record
end
def
remove_target
(
method
)
case
method
when
:delete
,
:destroy
@target
.
send
(
method
)
else
@target
[
@reflection
.
foreign_key
]
=
nil
@target
.
save
if
@target
.
persisted?
&&
@owner
.
persisted?
end
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录