class Sequel::Model::Errors

  1. lib/sequel/model/errors.rb
Parent: Model

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

Methods

Public Instance

  1. []
  2. add
  3. count
  4. empty?
  5. full_messages
  6. on

Constants

ATTRIBUTE_JOINER = ' and '.freeze  

Public Instance methods

[] (k)

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.

[show source]
# File lib/sequel/model/errors.rb, line 12
def [](k)
  has_key?(k) ? super : (self[k] = [])
end
add (att, msg)

Adds an error for the given attribute.

errors.add(:name, 'is not valid') if name == 'invalid'
[show source]
# File lib/sequel/model/errors.rb, line 19
def add(att, msg)
  self[att] << msg
end
count ()

Return the total number of error messages.

errors.count # => 3
[show source]
# File lib/sequel/model/errors.rb, line 26
def count
  values.inject(0){|m, v| m + v.length}
end
empty? ()

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

[show source]
# File lib/sequel/model/errors.rb, line 31
def empty?
  count == 0
end
full_messages ()

Returns an array of fully-formatted error messages.

errors.full_messages
# => ['name is not valid',
#     'hometown is not at least 2 letters']
[show source]
# File lib/sequel/model/errors.rb, line 40
def full_messages
  inject([]) do |m, kv| 
    att, errors = *kv
    errors.each {|e| m << (e.is_a?(LiteralString) ? e : "#{Array(att).join(ATTRIBUTE_JOINER)} #{e}")}
    m
  end
end
on (att)

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
[show source]
# File lib/sequel/model/errors.rb, line 53
def on(att)
  if v = fetch(att, nil) and !v.empty?
    v
  end
end