Class | ActiveRecord::Error
In: | lib/active_record/validations.rb
Parent: | Object

### Methods

full_message generate_full_message generate_message message new to_s value

### Attributes

attribute | [RW] |
base | [RW] |
message | [RW] |
options | [RW] |
type | [RW] |

### Public Class methods

new(base, attribute, type = nil, options = {})

### Public Instance methods

full_message()
message()
to_s()

Alias for message

value()

### Protected Instance methods

generate_full_message(message, options = {})

Wraps an error message into a full_message format.

The default full_message format for any locale is `"{{attribute}} {{message}}"`. One can specify locale specific default full_message format by storing it as a translation for the key `:"activerecord.errors.full_messages.format"`.

Additionally one can specify a validation specific error message format by storing a translation for `:"activerecord.errors.full_messages.[message_key]"`. E.g. the full_message format for any validation that uses :blank as a message key (such as validates_presence_of) can be stored to `:"activerecord.errors.full_messages.blank".`

Because the message key used by a validation can be overwritten on the `validates_*` class macro level one can customize the full_message format for any particular validation:

      # app/models/article.rb
      class Article < ActiveRecord::Base
        validates_presence_of :title, :message => :"title.blank"
      end

      # config/locales/en.yml
      en:
        activerecord:
          errors:
            full_messages:
              title:
                blank: This title is screwed!

generate_message(message, options = {})

Translates an error message in it‘s default scope (`activerecord.errrors.messages`). Error messages are first looked up in `models.MODEL.attributes.ATTRIBUTE.MESSAGE`, if it‘s not there, it‘s looked up in `models.MODEL.MESSAGE` and if that is not there it returns the translation of the default message (e.g. `activerecord.errors.messages.MESSAGE`). The translated model name, translated attribute name and the value are available for interpolation.

When using inheritence in your models, it will check all the inherited models too, but only if the model itself hasn‘t been found. Say you have `class Admin < User; end` and you wanted the translation for the `:blank` error `message` for the `title` `attribute`, it looks for these translations:

<ol> <li>`activerecord.errors.models.admin.attributes.title.blank`</li> <li>`activerecord.errors.models.admin.blank`</li> <li>`activerecord.errors.models.user.attributes.title.blank`</li> <li>`activerecord.errors.models.user.blank`</li> <li>`activerecord.errors.messages.blank`</li> <li>any default you provided through the `options` hash (in the activerecord.errors scope)</li> </ol>

[Validate]