aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/lib
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-07-11 16:59:11 -0500
committerJoshua Peek <josh@joshpeek.com>2009-07-11 16:59:11 -0500
commitc863388039ff6e97447be86184d41fbf30f0f389 (patch)
treef629b4909c3e0e854cc85c42093d5bb846111ca4 /activeresource/lib
parente83a05af076637cc78f0408f5810d5f8f965e10c (diff)
downloadrails-c863388039ff6e97447be86184d41fbf30f0f389.tar.gz
rails-c863388039ff6e97447be86184d41fbf30f0f389.tar.bz2
rails-c863388039ff6e97447be86184d41fbf30f0f389.zip
Add observing hooks to ARes
Diffstat (limited to 'activeresource/lib')
-rw-r--r--activeresource/lib/active_resource/base.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index f919f911e4..88a431a6d9 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -804,7 +804,8 @@ module ActiveResource
# my_company.size = 10
# my_company.save # sends PUT /companies/1 (update)
def save
- new? ? create : update
+ notify(:before_save)
+ (new? ? create : update).tap { notify(:after_save) }
end
# Deletes the resource from the remote service.
@@ -820,7 +821,8 @@ module ActiveResource
# new_person.destroy
# Person.find(new_id) # 404 (Resource Not Found)
def destroy
- connection.delete(element_path, self.class.headers)
+ notify(:before_destroy)
+ connection.delete(element_path, self.class.headers).tap { notify(:after_destroy) }
end
# Evaluates to <tt>true</tt> if this resource is not <tt>new?</tt> and is
@@ -995,16 +997,20 @@ module ActiveResource
# Update the resource on the remote service.
def update
+ notify(:before_update)
connection.put(element_path(prefix_options), encode, self.class.headers).tap do |response|
load_attributes_from_response(response)
+ notify(:after_update)
end
end
# Create (i.e., \save to the remote service) the \new resource.
def create
+ notify(:before_create)
connection.post(collection_path, encode, self.class.headers).tap do |response|
self.id = id_from_response(response)
load_attributes_from_response(response)
+ notify(:after_create)
end
end
@@ -1088,5 +1094,6 @@ module ActiveResource
class Base
extend ActiveModel::Naming
include CustomMethods, Validations
+ include ActiveModel::Observing
end
end