Rails 2.1
Update to Rails 2.1 final.
This commit is contained in:
parent
fd554cce90
commit
516d6dfac0
257 changed files with 4058 additions and 1933 deletions
80
vendor/rails/activemodel/lib/active_model/errors.rb
vendored
Normal file
80
vendor/rails/activemodel/lib/active_model/errors.rb
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
module ActiveModel
|
||||
class Errors < Hash
|
||||
include DeprecatedErrorMethods
|
||||
|
||||
@@default_error_messages = {
|
||||
:inclusion => "is not included in the list",
|
||||
:exclusion => "is reserved",
|
||||
:invalid => "is invalid",
|
||||
:confirmation => "doesn't match confirmation",
|
||||
:accepted => "must be accepted",
|
||||
:empty => "can't be empty",
|
||||
:blank => "can't be blank",
|
||||
:too_long => "is too long (maximum is %d characters)",
|
||||
:too_short => "is too short (minimum is %d characters)",
|
||||
:wrong_length => "is the wrong length (should be %d characters)",
|
||||
:taken => "has already been taken",
|
||||
:not_a_number => "is not a number",
|
||||
:greater_than => "must be greater than %d",
|
||||
:greater_than_or_equal_to => "must be greater than or equal to %d",
|
||||
:equal_to => "must be equal to %d",
|
||||
:less_than => "must be less than %d",
|
||||
:less_than_or_equal_to => "must be less than or equal to %d",
|
||||
:odd => "must be odd",
|
||||
:even => "must be even"
|
||||
}
|
||||
|
||||
# Holds a hash with all the default error messages that can be replaced by your own copy or localizations.
|
||||
cattr_accessor :default_error_messages
|
||||
|
||||
alias_method :get, :[]
|
||||
alias_method :set, :[]=
|
||||
|
||||
def [](attribute)
|
||||
if errors = get(attribute.to_sym)
|
||||
errors.size == 1 ? errors.first : errors
|
||||
else
|
||||
set(attribute.to_sym, [])
|
||||
end
|
||||
end
|
||||
|
||||
def []=(attribute, error)
|
||||
self[attribute.to_sym] << error
|
||||
end
|
||||
|
||||
def each
|
||||
each_key do |attribute|
|
||||
self[attribute].each { |error| yield attribute, error }
|
||||
end
|
||||
end
|
||||
|
||||
def size
|
||||
values.flatten.size
|
||||
end
|
||||
|
||||
def to_a
|
||||
inject([]) do |errors_with_attributes, (attribute, errors)|
|
||||
if error.blank?
|
||||
errors_with_attributes
|
||||
else
|
||||
if attr == :base
|
||||
errors_with_attributes << error
|
||||
else
|
||||
errors_with_attributes << (attribute.to_s.humanize + " " + error)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def to_xml(options={})
|
||||
options[:root] ||= "errors"
|
||||
options[:indent] ||= 2
|
||||
options[:builder] ||= Builder::XmlMarkup.new(:indent => options[:indent])
|
||||
|
||||
options[:builder].instruct! unless options.delete(:skip_instruct)
|
||||
options[:builder].errors do |e|
|
||||
to_a.each { |error| e.error(error) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue