diff options
author | Jamis Buck <jamis@37signals.com> | 2006-10-02 22:14:15 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-10-02 22:14:15 +0000 |
commit | 628838ed9349252eccd86b531959c111e285893e (patch) | |
tree | 2a7960e22b381eddf691dacc96cd18925de64dc8 /activeresource | |
parent | 48d4d43f9236f705e2e81bc1781c8c37384886a9 (diff) | |
download | rails-628838ed9349252eccd86b531959c111e285893e.tar.gz rails-628838ed9349252eccd86b531959c111e285893e.tar.bz2 rails-628838ed9349252eccd86b531959c111e285893e.zip |
Make #save behavior mimic AR::Base#save (true on success, false on failure)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5220 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activeresource')
-rw-r--r-- | activeresource/CHANGELOG | 2 | ||||
-rw-r--r-- | activeresource/lib/active_resource/base.rb | 7 | ||||
-rw-r--r-- | activeresource/lib/active_resource/validations.rb | 5 | ||||
-rw-r--r-- | activeresource/test/base_errors_test.rb | 7 | ||||
-rw-r--r-- | activeresource/test/base_test.rb | 4 |
5 files changed, 13 insertions, 12 deletions
diff --git a/activeresource/CHANGELOG b/activeresource/CHANGELOG index e24462a750..94481ae9ef 100644 --- a/activeresource/CHANGELOG +++ b/activeresource/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Make #save behavior mimic AR::Base#save (true on success, false on failure). [Jamis Buck] + * Add Basic HTTP Authentication to ActiveResource (closes #6305). [jonathan] * Extracted #id_from_response as an entry point for customizing how a created resource gets its own ID. diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb index cb520eef5c..656698fb25 100644 --- a/activeresource/lib/active_resource/base.rb +++ b/activeresource/lib/active_resource/base.rb @@ -169,12 +169,13 @@ module ActiveResource def update connection.put(self.class.element_path(id, prefix_options), to_xml) + true end def create - returning connection.post(self.class.collection_path(prefix_options), to_xml) do |resp| - self.id = id_from_response(resp) - end + resp = connection.post(self.class.collection_path(prefix_options), to_xml) + self.id = id_from_response(resp) + true end # takes a response from a typical create post and pulls the ID out diff --git a/activeresource/lib/active_resource/validations.rb b/activeresource/lib/active_resource/validations.rb index f1995a6070..3011ba3295 100644 --- a/activeresource/lib/active_resource/validations.rb +++ b/activeresource/lib/active_resource/validations.rb @@ -109,8 +109,9 @@ module ActiveResource def save_with_validation save_without_validation - rescue ResourceInvalid - errors.from_xml($!.response.body) + rescue ResourceInvalid => error + errors.from_xml(error.response.body) + return false end def valid? diff --git a/activeresource/test/base_errors_test.rb b/activeresource/test/base_errors_test.rb index 1aa677b1ba..c6b840ebe1 100644 --- a/activeresource/test/base_errors_test.rb +++ b/activeresource/test/base_errors_test.rb @@ -6,11 +6,8 @@ class BaseErrorsTest < Test::Unit::TestCase ActiveResource::HttpMock.respond_to do |mock| mock.post "/people.xml", {}, "<?xml version=\"1.0\" encoding=\"UTF-8\"?><errors><error>Age can't be blank</error><error>Name can't be blank</error><error>Name must start with a letter</error><error>Person quota full for today.</error></errors>", 400 end - @exception = nil - @person = Person.new(:name => '', :age => '') - @person.save - rescue ActiveResource::ResourceInvalid - @exception = $! + @person = Person.new(:name => '', :age => '') + assert_equal @person.save, false end def test_should_mark_as_invalid diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb index f3fd3b43e2..dd017b71fa 100644 --- a/activeresource/test/base_test.rb +++ b/activeresource/test/base_test.rb @@ -109,7 +109,7 @@ class BaseTest < Test::Unit::TestCase def test_create rick = Person.new - rick.save + assert_equal true, rick.save assert_equal '5', rick.id end @@ -133,7 +133,7 @@ class BaseTest < Test::Unit::TestCase matz.name = "David" assert_kind_of Person, matz assert_equal "David", matz.name - matz.save + assert_equal true, matz.save end def test_update_with_custom_prefix |