Module ActiveResource::Validations
In: lib/active_resource/validations.rb

Module to support validation and errors with Active Resource objects. The module overrides Base#save to rescue ActiveResource::ResourceInvalid exceptions and parse the errors returned in the web service response. The module also adds an errors collection that mimics the interface of the errors provided by ActiveRecord::Errors.

Example

Consider a Person resource on the server requiring both a first_name and a last_name with a validates_presence_of :first_name, :last_name declaration in the model:

  person = Person.new(:first_name => "Jim", :last_name => "")
  person.save                   # => false (server returns an HTTP 422 status code and errors)
  person.valid?                 # => false
  person.errors.empty?          # => false
  person.errors.count           # => 1
  person.errors.full_messages   # => ["Last name can't be empty"]
  person.errors[:last_name]  # => ["can't be empty"]
  person.last_name = "Halpert"
  person.save                   # => true (and person is now saved to the remote service)

Methods

Included Modules

ActiveModel::Validations

Public Instance methods

Returns the Errors object that holds all information about attribute error messages.

Validate a resource and save (POST) it to the remote web service. If any local validations fail - the save (POST) will not be attempted.

Checks for errors on an object (i.e., is resource.errors empty?).

Runs all the specified local validations and returns true if no errors were added, otherwise false. Runs local validations (eg those on your Active Resource model), and also any errors returned from the remote system the last time we saved. Remote errors can only be cleared by trying to re-save the resource.

Examples

  my_person = Person.create(params[:person])
  my_person.valid?
  # => true

  my_person.errors.add('login', 'can not be empty') if my_person.login == ''
  my_person.valid?
  # => false

[Validate]