Class | ActiveResource::Errors
In: | lib/active_resource/validations.rb
Parent: | Object

Active Resource validation is reported to and from this object, which is used by Base#save to determine whether the object in a valid state to be saved. See usage example in Validations.

### Methods

[] add add_to_base clear count each each_full from_xml full_messages invalid? length on on_base size

### Included Modules

Enumerable

### Attributes

errors | [R] |

### Public Instance methods

[](attribute)

Alias for on

add(attribute, msg)

Adds an error to an Active Resource object‘s attribute (named for the `attribute` parameter) with the error message in `msg`.

#### Examples

      my_resource = Node.find(1)
      my_resource.errors.add('name', 'can not be "base"') if my_resource.name == 'base'
      my_resource.errors.on('name')
      # => 'can not be "base"!'

      my_resource.errors.add('desc', 'can not be blank') if my_resource.desc == ''
      my_resource.valid?
      # => false
      my_resource.errors.on('desc')
      # => 'can not be blank!'

add_to_base(msg)

Add an error to the base Active Resource object rather than an attribute.

#### Examples

      my_folder = Folder.find(1)
      my_folder.errors.add_to_base("You can't edit an existing folder")
      my_folder.errors.on_base
      # => "You can't edit an existing folder"

      my_folder.errors.add_to_base("This folder has been tagged as frozen")
      my_folder.valid?
      # => false
      my_folder.errors.on_base
      # => ["You can't edit an existing folder", "This folder has been tagged as frozen"]

clear()
count()

Alias for size

each() {|attr, msg| ...}

Yields each attribute and associated message per error added.

#### Examples

      my_person = Person.new(params[:person])

      my_person.errors.add('login', 'can not be empty') if my_person.login == ''
      my_person.errors.add('password', 'can not be empty') if my_person.password == ''
      messages = ''
      my_person.errors.each {|attr, msg| messages += attr.humanize + " " + msg + "<br />"}
      messages
      # => "Login can not be empty<br />Password can not be empty<br />"

each_full() {|msg| ...}

Yields each full error message added. So Person.errors.add("first_name", "can‘t be empty") will be returned through iteration as "First name can‘t be empty".

#### Examples

      my_person = Person.new(params[:person])

      my_person.errors.add('login', 'can not be empty') if my_person.login == ''
      my_person.errors.add('password', 'can not be empty') if my_person.password == ''
      messages = ''
      my_person.errors.each_full {|msg| messages += msg + "<br/>"}
      messages
      # => "Login can not be empty<br />Password can not be empty<br />"

from_xml(xml)

Grabs errors from the XML response.

full_messages()

Returns all the full error messages in an array.

#### Examples

      my_person = Person.new(params[:person])

      my_person.errors.add('login', 'can not be empty') if my_person.login == ''
      my_person.errors.add('password', 'can not be empty') if my_person.password == ''
      messages = ''
      my_person.errors.full_messages.each {|msg| messages += msg + "<br/>"}
      messages
      # => "Login can not be empty<br />Password can not be empty<br />"

invalid?(attribute)

Returns true if the specified `attribute` has errors associated with it.

#### Examples

      my_resource = Disk.find(1)
      my_resource.errors.add('location', 'must be Main') unless my_resource.location == 'Main'
      my_resource.errors.on('location')
      # => 'must be Main!'

      my_resource.errors.invalid?('location')
      # => true
      my_resource.errors.invalid?('name')
      # => false

length()

Alias for size

on(attribute)

A method to return the errors associated with `attribute`, which returns nil, if no errors are associated with the specified `attribute`, the error message if one error is associated with the specified `attribute`, or an array of error messages if more than one error is associated with the specified `attribute`.

#### Examples

      my_person = Person.new(params[:person])
      my_person.errors.on('login')
      # => nil

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

      my_person.errors.add('login', 'can not be longer than 10 characters') if my_person.login.length > 10
      my_person.errors.on('login')
      # => ['can not be empty', 'can not be longer than 10 characters']

on_base()

A method to return errors assigned to `base` object through add_to_base, which returns nil, if no errors are associated with the specified `attribute`, the error message if one error is associated with the specified `attribute`, or an array of error messages if more than one error is associated with the specified `attribute`.

#### Examples

      my_account = Account.find(1)
      my_account.errors.on_base
      # => nil

      my_account.errors.add_to_base("This account is frozen")
      my_account.errors.on_base
      # => "This account is frozen"

      my_account.errors.add_to_base("This account has been closed")
      my_account.errors.on_base
      # => ["This account is frozen", "This account has been closed"]

size()

Returns the total number of errors added. Two errors added to the same attribute will be counted as such with this as well.

#### Examples

      my_person = Person.new(params[:person])
      my_person.errors.size
      # => 0

      my_person.errors.add('login', 'can not be empty') if my_person.login == ''
      my_person.errors.add('password', 'can not be empty') if my_person.password == ''
      my_person.error.size
      # => 2

[Validate]