Class Sequel::Model::Errors
In: lib/sequel/model/errors.rb
Parent: ::Hash

Errors represents validation errors, a simple hash subclass with a few convenience methods.

Methods

[]   add   count   empty?   full_messages   on  

Constants

ATTRIBUTE_JOINER = ' and '.freeze

Public Instance methods

Assign an array of messages for each attribute on access. Using this message is discouraged in new code, use add to add new error messages, and on to check existing error messages.

[Source]

    # File lib/sequel/model/errors.rb, line 12
12:       def [](k)
13:         if has_key?(k)
14:           super
15:         else
16:           Sequel::Deprecation.deprecate('Model::Errors#[] autovivification', 'Please switch to Model::Errors#add to add errors, and Model::Errors#on to get errors')
17:           self[k] = []
18:         end
19:       end

Adds an error for the given attribute.

  errors.add(:name, 'is not valid') if name == 'invalid'

[Source]

    # File lib/sequel/model/errors.rb, line 24
24:       def add(att, msg)
25:         fetch(att){self[att] = []} << msg
26:       end

Return the total number of error messages.

  errors.count # => 3

[Source]

    # File lib/sequel/model/errors.rb, line 31
31:       def count
32:         values.inject(0){|m, v| m + v.length}
33:       end

Return true if there are no error messages, false otherwise.

[Source]

    # File lib/sequel/model/errors.rb, line 36
36:       def empty?
37:         count == 0
38:       end

Returns an array of fully-formatted error messages.

  errors.full_messages
  # => ['name is not valid',
  #     'hometown is not at least 2 letters']

[Source]

    # File lib/sequel/model/errors.rb, line 45
45:       def full_messages
46:         inject([]) do |m, kv| 
47:           att, errors = *kv
48:           errors.each {|e| m << (e.is_a?(LiteralString) ? e : "#{Array(att).join(ATTRIBUTE_JOINER)} #{e}")}
49:           m
50:         end
51:       end

Returns the array of errors for the given attribute, or nil if there are no errors for the attribute.

  errors.on(:name) # => ['name is not valid']
  errors.on(:id) # => nil

[Source]

    # File lib/sequel/model/errors.rb, line 58
58:       def on(att)
59:         if v = fetch(att, nil) and !v.empty?
60:           v
61:         end
62:       end

[Validate]