Module

Validations

Module to allow validation of ActiveResource objects, which creates an Errors instance for every resource. Methods are implemented by overriding +Base#validate+ or its variants Each of these methods can inspect the state of the object, which usually means ensuring that a number of attributes have a certain value (such as not empty, within a given range, matching a certain regular expression and so on).

Example

class Person < ActiveResource::Base
   self.site = "http://www.localhost.com:3000/"
   protected
     def validate
       errors.add_on_empty %w( first_name last_name )
       errors.add("phone_number", "has invalid format") unless phone_number =~ /[0-9]*/
     end

     def validate_on_create # is only run the first time a new object is saved
       unless valid_member?(self)
         errors.add("membership_discount", "has expired")
       end
     end

     def validate_on_update
       errors.add_to_base("No changes have occurred") if unchanged_attributes?
     end
end

person = Person.new("first_name" => "Jim", "phone_number" => "I will not tell you.")
person.save                         # => false (and doesn't do the save)
person.errors.empty?                # => false
person.errors.count                 # => 2
person.errors.on "last_name"        # => "can't be empty"
person.attributes = { "last_name" => "Halpert", "phone_number" => "555-5555" }
person.save                         # => true (and person is now saved to the remote service)
Public Methods
errors Returns the Errors object that holds all information about attribute error messages.
included
save_with_validation Validate a resource and save (POST) it to the remote web service.
valid? Checks for errors on an object (i.e., is resource.errors empty?).
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.