Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
61d12ebb
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,体验更适合开发者的 AI 搜索 >>
提交
61d12ebb
编写于
3月 01, 2015
作者:
A
Arthur Neves
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move transaction code to transaction module
上级
afd1a870
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
41 deletion
+41
-41
activerecord/lib/active_record/core.rb
activerecord/lib/active_record/core.rb
+0
-41
activerecord/lib/active_record/transactions.rb
activerecord/lib/active_record/transactions.rb
+41
-0
未找到文件。
activerecord/lib/active_record/core.rb
浏览文件 @
61d12ebb
...
...
@@ -483,47 +483,6 @@ def slice(*methods)
private
def
set_transaction_state
(
state
)
# :nodoc:
@transaction_state
=
state
end
def
has_transactional_callbacks?
# :nodoc:
!
_rollback_callbacks
.
empty?
||
!
_commit_callbacks
.
empty?
||
!
_before_commit_callbacks
.
empty?
end
# Updates the attributes on this particular ActiveRecord object so that
# if it is associated with a transaction, then the state of the AR object
# will be updated to reflect the current state of the transaction
#
# The @transaction_state variable stores the states of the associated
# transaction. This relies on the fact that a transaction can only be in
# one rollback or commit (otherwise a list of states would be required)
# Each AR object inside of a transaction carries that transaction's
# TransactionState.
#
# This method checks to see if the ActiveRecord object's state reflects
# the TransactionState, and rolls back or commits the ActiveRecord object
# as appropriate.
#
# Since ActiveRecord objects can be inside multiple transactions, this
# method recursively goes through the parent of the TransactionState and
# checks if the ActiveRecord object reflects the state of the object.
def
sync_with_transaction_state
update_attributes_from_transaction_state
(
@transaction_state
,
0
)
end
def
update_attributes_from_transaction_state
(
transaction_state
,
depth
)
@reflects_state
=
[
false
]
if
depth
==
0
if
transaction_state
&&
transaction_state
.
finalized?
&&
!
has_transactional_callbacks?
unless
@reflects_state
[
depth
]
restore_transaction_record_state
if
transaction_state
.
rolledback?
clear_transaction_record_state
@reflects_state
[
depth
]
=
true
end
end
end
# Under Ruby 1.9, Array#flatten will call #to_ary (recursively) on each of the elements
# of the array, and then rescues from the possible NoMethodError. If those elements are
# ActiveRecord::Base's, then this triggers the various method_missing's that we have,
...
...
activerecord/lib/active_record/transactions.rb
浏览文件 @
61d12ebb
...
...
@@ -442,5 +442,46 @@ def transaction_include_any_action?(actions) #:nodoc:
end
end
end
def
set_transaction_state
(
state
)
# :nodoc:
@transaction_state
=
state
end
def
has_transactional_callbacks?
# :nodoc:
!
_rollback_callbacks
.
empty?
||
!
_commit_callbacks
.
empty?
||
!
_before_commit_callbacks
.
empty?
end
# Updates the attributes on this particular ActiveRecord object so that
# if it is associated with a transaction, then the state of the AR object
# will be updated to reflect the current state of the transaction
#
# The @transaction_state variable stores the states of the associated
# transaction. This relies on the fact that a transaction can only be in
# one rollback or commit (otherwise a list of states would be required)
# Each AR object inside of a transaction carries that transaction's
# TransactionState.
#
# This method checks to see if the ActiveRecord object's state reflects
# the TransactionState, and rolls back or commits the ActiveRecord object
# as appropriate.
#
# Since ActiveRecord objects can be inside multiple transactions, this
# method recursively goes through the parent of the TransactionState and
# checks if the ActiveRecord object reflects the state of the object.
def
sync_with_transaction_state
update_attributes_from_transaction_state
(
@transaction_state
,
0
)
end
def
update_attributes_from_transaction_state
(
transaction_state
,
depth
)
@reflects_state
=
[
false
]
if
depth
==
0
if
transaction_state
&&
transaction_state
.
finalized?
&&
!
has_transactional_callbacks?
unless
@reflects_state
[
depth
]
restore_transaction_record_state
if
transaction_state
.
rolledback?
clear_transaction_record_state
@reflects_state
[
depth
]
=
true
end
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录