Module | ActiveResource::Validations |
In: |
vendor/rails/activeresource/lib/active_resource/validations.rb
|
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).
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)
Validate a resource and save (POST) it to the remote web service.
# File vendor/rails/activeresource/lib/active_resource/validations.rb, line 261 261: def save_with_validation 262: save_without_validation 263: true 264: rescue ResourceInvalid => error 265: errors.from_xml(error.response.body) 266: false 267: end
Checks for errors on an object (i.e., is resource.errors empty?).
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
# File vendor/rails/activeresource/lib/active_resource/validations.rb, line 279 279: def valid? 280: errors.empty? 281: end