class Sequel::Model::Errors
Errors represents validation errors, a simple hash subclass with a few convenience methods.
Constants
- ATTRIBUTE_JOINER
Public Instance Methods
[](k)
click to toggle source
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.
Calls superclass method
# File lib/sequel/model/errors.rb, line 12 def [](k) if has_key?(k) super else Sequel::Deprecation.deprecate('Model::Errors#[] autovivification', 'Please switch to Model::Errors#add to add errors, and Model::Errors#on to get errors') self[k] = [] end end
add(att, msg)
click to toggle source
Adds an error for the given attribute.
errors.add(:name, 'is not valid') if name == 'invalid'
# File lib/sequel/model/errors.rb, line 24 def add(att, msg) fetch(att){self[att] = []} << msg end
count()
click to toggle source
Return the total number of error messages.
errors.count # => 3
# File lib/sequel/model/errors.rb, line 31 def count values.inject(0){|m, v| m + v.length} end
empty?()
click to toggle source
Return true if there are no error messages, false otherwise.
# File lib/sequel/model/errors.rb, line 36 def empty? count == 0 end
full_messages()
click to toggle source
Returns an array of fully-formatted error messages.
errors.full_messages # => ['name is not valid', # 'hometown is not at least 2 letters']
# File lib/sequel/model/errors.rb, line 45 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)
click to toggle source
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
# File lib/sequel/model/errors.rb, line 58 def on(att) if v = fetch(att, nil) and !v.empty? v end end