Class: Validatable::Errors
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/errors.rb
Constant Summary collapse
- MessageCodeFor =
{ :unique => "attribute.duplicate.entry".freeze, :format => "attribute.format.invalid".freeze, :length => "attribute.length.invalid".freeze, :valid => "attribute.document.invalid".freeze, :logic => "attribute.logic.false".freeze, :accept => "attribute.not.accepted".freeze, :required => "attribute.not.present".freeze, :exclusion => "attribute.is.reserved".freeze, :inclusion => "attribute.is.out.of.list".freeze, :confirmation => "attribute.confirmation.failed".freeze, :match => "attribute.match.failed".freeze, :integer => "attribute.not.an.integer".freeze, :numeric => "attribute.not.a.number".freeze }
Instance Method Summary collapse
-
#add(attribute, message) ⇒ Object
:nodoc:.
-
#count ⇒ Object
:nodoc:.
-
#errors ⇒ Object
:nodoc:.
-
#full_messages ⇒ Object
call-seq: full_messages -> an_array_of_messages.
-
#humanize(lower_case_and_underscored_word) ⇒ Object
:nodoc:.
-
#invalid?(attribute) ⇒ Boolean
Returns true if the specified
attributehas errors associated with it. -
#merge!(errors) ⇒ Object
:nodoc:.
-
#on(attribute) ⇒ Object
call-seq: on(attribute).
-
#raw(attribute) ⇒ Object
call-seq: raw(attribute).
-
#replace(attribute, value) ⇒ Object
call-seq: replace(attribute).
Instance Method Details
#add(attribute, message) ⇒ Object
:nodoc:
50 51 52 53 |
# File 'lib/errors.rb', line 50 def add(attribute, ) #:nodoc: errors[attribute.to_sym] = [] if errors[attribute.to_sym].nil? errors[attribute.to_sym] << end |
#count ⇒ Object
:nodoc:
78 79 80 |
# File 'lib/errors.rb', line 78 def count #:nodoc: errors.values.flatten.size end |
#errors ⇒ Object
:nodoc:
74 75 76 |
# File 'lib/errors.rb', line 74 def errors #:nodoc: @errors ||= {} end |
#full_messages ⇒ Object
call-seq: full_messages -> an_array_of_messages
Returns an array containing the full list of error messages.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/errors.rb', line 85 def = [] errors.each_key do |attribute| errors[attribute].each do |msg| next if msg.nil? if attribute.to_s == "base" << msg else << humanize(attribute.to_s) + " " + msg end end end end |
#humanize(lower_case_and_underscored_word) ⇒ Object
:nodoc:
102 103 104 |
# File 'lib/errors.rb', line 102 def humanize(lower_case_and_underscored_word) #:nodoc: lower_case_and_underscored_word.to_s.gsub(/_id$/, "").gsub(/_/, " ").capitalize end |
#invalid?(attribute) ⇒ Boolean
Returns true if the specified attribute has errors associated with it.
class Company < ActiveRecord::Base
validates_presence_of :name, :address, :email
validates_length_of :name, :in => 5..30
end
company = Company.create(:address => '123 First St.')
company.errors.invalid?(:name) # => true
company.errors.invalid?(:address) # => false
36 37 38 |
# File 'lib/errors.rb', line 36 def invalid?(attribute) !@errors[attribute.to_sym].nil? end |
#merge!(errors) ⇒ Object
:nodoc:
55 56 57 58 |
# File 'lib/errors.rb', line 55 def merge!(errors) #:nodoc: errors.each_pair{|k, v| add(k,v)} self end |
#on(attribute) ⇒ Object
call-seq: on(attribute)
-
Returns nil, if no errors are associated with the specified
attribute. -
Returns the error message, if one error is associated with the specified
attribute. -
Returns an array of error messages, if more than one error is associated with the specified
attribute.
45 46 47 48 |
# File 'lib/errors.rb', line 45 def on(attribute) return nil if errors[attribute.to_sym].nil? errors[attribute.to_sym].size == 1 ? errors[attribute.to_sym].first : errors[attribute.to_sym] end |
#raw(attribute) ⇒ Object
call-seq: raw(attribute)
-
Returns an array of error messages associated with the specified
attribute.
70 71 72 |
# File 'lib/errors.rb', line 70 def raw(attribute) errors[attribute.to_sym] end |
#replace(attribute, value) ⇒ Object
call-seq: replace(attribute)
-
Replaces the errors value for the given
attribute
63 64 65 |
# File 'lib/errors.rb', line 63 def replace(attribute, value) errors[attribute.to_sym] = value end |