aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/CHANGELOG2
-rwxr-xr-xactiverecord/lib/active_record/base.rb2
-rwxr-xr-xactiverecord/test/base_test.rb5
3 files changed, 8 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG
index 00b207bb38..3ddf180e0d 100644
--- a/activerecord/CHANGELOG
+++ b/activerecord/CHANGELOG
@@ -4,6 +4,8 @@
* Allow ordering of calculated results and/or grouped fields in calculations [solo@gatelys.com]
+* Make ActiveRecord::Base#save! return true instead of nil on success. #4173 [johan@johansorensen.com]
+
* Dynamically set allow_concurrency. #4044 [Stefan Kaes]
* Added Base#to_xml that'll turn the current record into a XML representation [DHH]. Example:
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 9e3c54c7d4..8c1f615a37 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -1305,7 +1305,7 @@ module ActiveRecord #:nodoc:
# Attempts to save the record, but instead of just returning false if it couldn't happen, it raises a
# RecordNotSaved exception
def save!
- raise RecordNotSaved unless save
+ save || raise(RecordNotSaved)
end
# Deletes the record in the database and freezes this instance to reflect that no changes should
diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb
index 226f163b52..d910215a0a 100755
--- a/activerecord/test/base_test.rb
+++ b/activerecord/test/base_test.rb
@@ -136,6 +136,11 @@ class BasicsTest < Test::Unit::TestCase
topic_reloaded = Topic.find(topic.id)
assert_equal("New Topic", topic_reloaded.title)
end
+
+ def test_save!
+ topic = Topic.new(:title => "New Topic")
+ assert topic.save!
+ end
def test_hashes_not_mangled
new_topic = { :title => "New Topic" }