diff options
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 2 | ||||
-rwxr-xr-x | activerecord/test/base_test.rb | 5 |
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" } |