From b7944e1b211c37fd9db8d72bef9f12c42b68a0a4 Mon Sep 17 00:00:00 2001 From: Xavier Noria Date: Wed, 14 Jul 2010 17:42:48 +0200 Subject: revises the rdoc of update_attributes and update_attributes! to document they are wrapped in a transaction, and adds code comments explaining why --- activerecord/lib/active_record/persistence.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'activerecord/lib/active_record/persistence.rb') diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 3681a63e03..7ec443ccc7 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -118,18 +118,23 @@ module ActiveRecord self.class.update_all(changes, { primary_key => self[primary_key] }) == 1 end - # Updates all the attributes from the passed-in Hash and saves the record. - # If the object is invalid, the saving will fail and false will be returned. + # Updates the attributes of the model from the passed-in hash and saves the + # record, all wrapped in a transaction. If the object is invalid, the saving + # will fail and false will be returned. def update_attributes(attributes) + # The following transaction covers any possible database side-effects of the + # attributes assignment. For example, setting the IDs of a child collection. with_transaction_returning_status do self.attributes = attributes save end end - # Updates an object just like Base.update_attributes but calls save! instead - # of save so an exception is raised if the record is invalid. + # Updates its receiver just like +update_attributes+ but calls save! instead + # of +save+, so an exception is raised if the record is invalid. def update_attributes!(attributes) + # The following transaction covers any possible database side-effects of the + # attributes assignment. For example, setting the IDs of a child collection. with_transaction_returning_status do self.attributes = attributes save! -- cgit v1.2.3