aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2014-08-11 09:11:31 -0300
committerSantiago Pastorino <santiago@wyeworks.com>2014-08-11 09:11:31 -0300
commitb45b99894a60eda434abec94d133a1cfd8de2dda (patch)
treea3e62ee239e39461070ddef9c538e8e67d40e7fc
parent49798b52bfaaa452f1c535ca932cc267482348fe (diff)
parent0f99aa615e11c50cc64b567f54cf64f59108c5e5 (diff)
downloadrails-b45b99894a60eda434abec94d133a1cfd8de2dda.tar.gz
rails-b45b99894a60eda434abec94d133a1cfd8de2dda.tar.bz2
rails-b45b99894a60eda434abec94d133a1cfd8de2dda.zip
Merge pull request #16456 from lsylvester/improve-active-record-error-message-on-update_columns-for-destroyed-records
Change error message in update_columns for destroyed objects
-rw-r--r--activerecord/CHANGELOG.md6
-rw-r--r--activerecord/lib/active_record/persistence.rb3
2 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 4b70d883fe..ea951fdfd1 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -1,3 +1,9 @@
+* When calling `update_columns` on a record that is not persisted, the error
+ message now reflects whether that object is a new record or has been
+ destroyed.
+
+ *Lachlan Sylvester*
+
* Define `id_was` to get the previous value of the primary key.
Currently when we call id_was and we have a custom primary key name
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb
index b5799d6bff..51b1931ed5 100644
--- a/activerecord/lib/active_record/persistence.rb
+++ b/activerecord/lib/active_record/persistence.rb
@@ -287,7 +287,8 @@ module ActiveRecord
# This method raises an +ActiveRecord::ActiveRecordError+ when called on new
# objects, or when at least one of the attributes is marked as readonly.
def update_columns(attributes)
- raise ActiveRecordError, "cannot update on a new record object" unless persisted?
+ raise ActiveRecordError, "cannot update a new record" if new_record?
+ raise ActiveRecordError, "cannot update a destroyed record" if destroyed?
attributes.each_key do |key|
verify_readonly_attribute(key.to_s)