Module: ActiveResource::CustomMethods

### Home Classes Methods

### In Files

- lib/active_resource/custom_methods.rb

### Namespace

- MODULE ActiveResource::CustomMethods::ClassMethods
- MODULE ActiveResource::CustomMethods::InstanceMethods

### Methods

- ::delete
- ::get
- ::orig_delete
- ::post
- ::put

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- ActiveResource
- ActiveResource::BadRequest
- ActiveResource::Base
- ActiveResource::ClientError
- ActiveResource::Connection
- ActiveResource::CustomMethods
- ActiveResource::CustomMethods::ClassMethods
- ActiveResource::CustomMethods::InstanceMethods
- ActiveResource::Errors
- ActiveResource::ForbiddenAccess
- ActiveResource::Formats
- ActiveResource::Formats::JsonFormat
- ActiveResource::Formats::XmlFormat
- ActiveResource::HttpMock
- ActiveResource::InvalidRequestError
- ActiveResource::LogSubscriber
- ActiveResource::Observing
- ActiveResource::Railtie
- ActiveResource::Request
- ActiveResource::ResourceConflict
- ActiveResource::ResourceGone
- ActiveResource::ResourceNotFound
- ActiveResource::Response
- ActiveResource::SSLError
- ActiveResource::ServerError
- ActiveResource::TimeoutError
- ActiveResource::UnauthorizedAccess
- ActiveResource::Validations

No matching classes.

# ActiveResource::CustomMethods

A module to support custom REST methods and sub-resources, allowing you to break out of the “default” REST methods with your own custom resource requests. For example, say you use Rails to expose a REST service and configure your routes with:

      map.resources :people, :new => { :register => :post },
                             :member => { :promote => :put, :deactivate => :delete }
                             :collection => { :active => :get }

    This route set creates routes for the following HTTP requests:

      POST    /people/new/register.xml # PeopleController.register
      PUT     /people/1/promote.xml    # PeopleController.promote with :id => 1
      DELETE  /people/1/deactivate.xml # PeopleController.deactivate with :id => 1
      GET     /people/active.xml       # PeopleController.active

Using this module, Active Resource can use these custom REST methods just like the standard methods.

    class Person < ActiveResource::Base
      self.site = "http://37s.sunrise.i:3000"
    end

    Person.new(:name => 'Ryan).post(:register)  # POST /people/new/register.xml
    # => { :id => 1, :name => 'Ryan' }

    Person.find(1).put(:promote, :position => 'Manager') # PUT /people/1/promote.xml
    Person.find(1).delete(:deactivate) # DELETE /people/1/deactivate.xml

    Person.get(:active)  # GET /people/active.xml
    # => [{:id => 1, :name => 'Ryan'}, {:id => 2, :name => 'Joe'}]

### Public Class Methods

delete(custom_method_name, options = {}) click to toggle source

    # File lib/active_resource/custom_methods.rb, line 68
    def delete(custom_method_name, options = {})
      # Need to jump through some hoops to retain the original class 'delete' method
      if custom_method_name.is_a?(Symbol)
        connection.delete(custom_method_collection_url(custom_method_name, options), headers)
      else
        orig_delete(custom_method_name, options)
      end
    end

Also aliased as: orig_delete
get(custom_method_name, options = {}) click to toggle source

Invokes a GET to a given custom REST method. For example:

    Person.get(:active)  # GET /people/active.xml
    # => [{:id => 1, :name => 'Ryan'}, {:id => 2, :name => 'Joe'}]

    Person.get(:active, :awesome => true)  # GET /people/active.xml?awesome=true
    # => [{:id => 1, :name => 'Ryan'}]

Note: the objects returned from this method are not automatically converted into ActiveResource::Base instances - they are ordinary Hashes. If you are expecting ActiveResource::Base instances, use the `find` class method with the `:from` option. For example:

    Person.find(:all, :from => :active)

    # File lib/active_resource/custom_methods.rb, line 56
    def get(custom_method_name, options = {})
      connection.get(custom_method_collection_url(custom_method_name, options), headers)
    end

orig_delete(custom_method_name, options = {}) click to toggle source
Alias for: delete
post(custom_method_name, options = {}, body = '') click to toggle source

    # File lib/active_resource/custom_methods.rb, line 60
    def post(custom_method_name, options = {}, body = '')
      connection.post(custom_method_collection_url(custom_method_name, options), body, headers)
    end

put(custom_method_name, options = {}, body = '') click to toggle source

    # File lib/active_resource/custom_methods.rb, line 64
    def put(custom_method_name, options = {}, body = '')
      connection.put(custom_method_collection_url(custom_method_name, options), body, headers)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.