Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #10578 from dingle/lu/back_port_to_json_fix

Support include_root_in_json for ActiveResource properly.
  • Loading branch information...
commit 0d8dbd131b551051ce35379093832fa12fb0cf10 2 parents 5b020fa + ec55866
@rafaelfranca rafaelfranca authored
View
4 activeresource/CHANGELOG.md
@@ -1,7 +1,9 @@
## unreleased ##
-* No changes.
+* Fixes an issue that ActiveResource models ignores ActiveResource::Base.include_root_in_json.
+ Backported from the now separate repo rails/activeresouce.
+ *Xinjiang Lu*
## Rails 3.2.13 (Mar 18, 2013) ##
View
2  activeresource/lib/active_resource/base.rb
@@ -1336,7 +1336,7 @@ def respond_to?(method, include_priv = false)
end
def to_json(options={})
- super({ :root => self.class.element_name }.merge(options))
+ super(include_root_in_json ? { :root => self.class.element_name }.merge(options) : options)
end
def to_xml(options={})
View
16 activeresource/test/cases/base_test.rb
@@ -1020,7 +1020,6 @@ def foo
end
def test_to_json
- Person.include_root_in_json = true
joe = Person.find(6)
encode = joe.encode
json = joe.to_json
@@ -1032,6 +1031,21 @@ def test_to_json
assert_match %r{\}\}$}, json
end
+ def test_to_json_without_root
+ ActiveResource::Base.include_root_in_json = false
+ joe = Person.find(6)
+ encode = joe.encode
+ json = joe.to_json
+
+ assert_equal encode, json
+ assert_no_match %r{^\{"person":\}}, json
+ assert_match %r{"id":6}, json
+ assert_match %r{"name":"Joe"}, json
+ assert_match %r{\}$}, json
+ ensure
+ ActiveResource::Base.include_root_in_json = true
+ end
+
def test_to_json_with_element_name
old_elem_name = Person.element_name
Person.include_root_in_json = true
Please sign in to comment.
Something went wrong with that request. Please try again.