Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fix generation of wrong json string when field has multiple errors

  • Loading branch information...
commit e5ec81cd87d2ca2dd412f0468f868315519f32cf 1 parent 76a15dd
@krekoten authored
View
10 activemodel/lib/active_model/errors.rb
@@ -167,6 +167,16 @@ def to_xml(options={})
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
View
10 activemodel/test/cases/errors_test.rb
@@ -61,5 +61,15 @@ def self.lookup_ancestors
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
Please sign in to comment.
Something went wrong with that request. Please try again.