提交 253259f3 编写于 作者: H Hongli Lai (Phusion)

Add more information about transactions.

上级 86a0e98a
......@@ -25,7 +25,7 @@ def self.included(base)
# have a number of statements that must be executed together or not at all.
# Example:
#
# transaction do
# ActiveRecord::Base.transaction do
# david.withdrawal(100)
# mary.deposit(100)
# end
......@@ -40,7 +40,9 @@ def self.included(base)
#
# Though the transaction class method is called on some Active Record class,
# the objects within the transaction block need not all be instances of
# that class.
# that class. This is because transactions are per-database connection, not
# per-model.
#
# In this example a <tt>Balance</tt> record is transactionally saved even
# though <tt>transaction</tt> is called on the <tt>Account</tt> class:
#
......@@ -49,6 +51,14 @@ def self.included(base)
# account.save!
# end
#
# Note that the +transaction+ method is also available as a model instance
# method. For example, you can also do this:
#
# balance.transaction do
# balance.save!
# account.save!
# end
#
# == Transactions are not distributed across database connections
#
# A transaction acts on a single database connection. If you have
......@@ -95,6 +105,7 @@ def transaction(&block)
end
end
# See ActiveRecord::Transactions::ClassMethods for detailed documentation.
def transaction(&block)
self.class.transaction(&block)
end
......@@ -131,6 +142,9 @@ def rollback_active_record_state!
# Executes +method+ within a transaction and captures its return value as a
# status flag. If the status is true the transaction is committed, otherwise
# a ROLLBACK is issued. In any case the status flag is returned.
#
# This method is available within the context of an ActiveRecord::Base
# instance.
def with_transaction_returning_status(method, *args)
status = nil
transaction do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册