aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinjiang Lu <xinjiang.lu@gmail.com>2013-05-12 12:10:02 -0400
committerXinjiang Lu <xinjiang.lu@gmail.com>2013-05-15 20:22:18 -0400
commitec55866e398feb1a52701027ab86857b62622ab6 (patch)
tree1ec15a25f77abf0f04efdd64a4d38fe7cc2f97e0
parent5919a552e4e4203b8d5eb5234428bc00dd462c49 (diff)
downloadrails-ec55866e398feb1a52701027ab86857b62622ab6.tar.gz
rails-ec55866e398feb1a52701027ab86857b62622ab6.tar.bz2
rails-ec55866e398feb1a52701027ab86857b62622ab6.zip
Support include_root_in_json for ActiveResource properly.
This commit is a backport from https://github.com/rails/activeresource/pull/29. The ActiveResource's include_root_in_json option is broken for 3.2.x.
-rw-r--r--activeresource/CHANGELOG.md4
-rw-r--r--activeresource/lib/active_resource/base.rb2
-rw-r--r--activeresource/test/cases/base_test.rb16
3 files changed, 19 insertions, 3 deletions
diff --git a/activeresource/CHANGELOG.md b/activeresource/CHANGELOG.md
index 77419bb904..1d084ec5d9 100644
--- a/activeresource/CHANGELOG.md
+++ b/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) ##
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index 032a245c3c..f9cc7d03c8 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -1336,7 +1336,7 @@ module ActiveResource
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={})
diff --git a/activeresource/test/cases/base_test.rb b/activeresource/test/cases/base_test.rb
index 983f0541a8..9176b5db93 100644
--- a/activeresource/test/cases/base_test.rb
+++ b/activeresource/test/cases/base_test.rb
@@ -1020,7 +1020,6 @@ class BaseTest < Test::Unit::TestCase
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 @@ class BaseTest < Test::Unit::TestCase
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