提交 aeaab06c 编写于 作者: A Alex Le 提交者: José Valim

ActiveModel::Errors json serialization to work as Rails 3b4 [#5254 state:resolved]

Signed-off-by: NJosé Valim <jose.valim@gmail.com>
上级 59cf514a
......@@ -169,9 +169,9 @@ def to_xml(options={})
to_a.to_xml options.reverse_merge(:root => "errors", :skip_types => true)
end
# Returns an array as JSON representation for this object.
# Returns an ActiveSupport::OrderedHash that can be used as the JSON representation for this object.
def as_json(options=nil)
to_a
self
end
# Adds +message+ to the error messages on +attribute+, which will be returned on a call to
......
......@@ -89,7 +89,7 @@ def setup
assert_match %r{"preferences":\{"shows":"anime"\}}, json
end
test "methds are called on object" do
test "methods are called on object" do
# Define methods on fixture.
def @contact.label; "Has cheezburger"; end
def @contact.favorite_quote; "Constraints are liberating"; end
......@@ -102,4 +102,18 @@ def @contact.favorite_quote; "Constraints are liberating"; end
assert_match %r{"label":"Has cheezburger"}, methods_json
assert_match %r{"favorite_quote":"Constraints are liberating"}, methods_json
end
test "should return OrderedHash for errors" do
car = Automobile.new
# run the validation
car.valid?
hash = ActiveSupport::OrderedHash.new
hash[:make] = "can't be blank"
hash[:model] = "is too short (minimum is 2 characters)"
assert_equal hash.to_json, car.errors.to_json
end
end
......@@ -170,9 +170,11 @@ def test_errors_conversions
assert_match %r{<errors>}, xml
assert_match %r{<error>Title can't be blank</error>}, xml
assert_match %r{<error>Content can't be blank</error>}, xml
json = t.errors.to_json
assert_equal t.errors.to_a.to_json, json
hash = ActiveSupport::OrderedHash.new
hash[:title] = "can't be blank"
hash[:content] = "can't be blank"
assert_equal t.errors.to_json, hash.to_json
end
def test_validation_order
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册