mirror of https://github.com/rails/rails
Fix generation of wrong json string when field has multiple errors
This commit is contained in:
parent
76a15dd059
commit
a9b666b51d
|
@ -167,6 +167,16 @@ module ActiveModel
|
|||
def as_json(options=nil)
|
||||
self
|
||||
end
|
||||
|
||||
def encode_json(encoder)
|
||||
errors = []
|
||||
each_pair do |key, value|
|
||||
value = value.first if value.size == 1
|
||||
errors << "#{encoder.encode(key.to_s)}:#{encoder.encode(value, false)}"
|
||||
end
|
||||
|
||||
"{#{errors * ','}}"
|
||||
end
|
||||
|
||||
# Adds +message+ to the error messages on +attribute+, which will be returned on a call to
|
||||
# <tt>on(attribute)</tt> for the same attribute. More than one error can be added to the same
|
||||
|
|
|
@ -61,5 +61,15 @@ class ErrorsTest < ActiveModel::TestCase
|
|||
assert_equal ["name can not be blank", "name can not be nil"], person.errors.to_a
|
||||
|
||||
end
|
||||
|
||||
test 'to_json should return valid json string' do
|
||||
person = Person.new
|
||||
person.errors.add(:name, "can not be blank")
|
||||
person.errors.add(:name, "can not be nil")
|
||||
|
||||
hash = ActiveSupport::OrderedHash[:name, ["can not be blank", "can not be nil"]]
|
||||
|
||||
assert_equal person.errors.to_json, hash.to_json
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue