Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
72f89b5d
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
72f89b5d
编写于
4月 05, 2010
作者:
S
Santiago Pastorino
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
create option to include_root_in_json for ActiveResource [#2584 state:committed]
上级
c6746ffa
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
28 addition
and
6 deletion
+28
-6
activeresource/lib/active_resource/base.rb
activeresource/lib/active_resource/base.rb
+9
-0
activeresource/test/cases/base_test.rb
activeresource/test/cases/base_test.rb
+19
-6
未找到文件。
activeresource/lib/active_resource/base.rb
浏览文件 @
72f89b5d
...
...
@@ -251,6 +251,9 @@ class Base
# The logger for diagnosing and tracing Active Resource calls.
cattr_accessor
:logger
# Controls the top-level behavior of JSON serialization
cattr_accessor
:include_root_in_json
,
:instance_writer
=>
false
class
<<
self
# Creates a schema for this resource - setting the attributes that are
# known prior to fetching an instance from the remote system.
...
...
@@ -1240,6 +1243,12 @@ def encode(options={})
case
self
.
class
.
format
when
ActiveResource
::
Formats
::
XmlFormat
self
.
class
.
format
.
encode
(
attributes
,
{
:root
=>
self
.
class
.
element_name
}.
merge
(
options
))
when
ActiveResource
::
Formats
::
JsonFormat
if
ActiveResource
::
Base
.
include_root_in_json
self
.
class
.
format
.
encode
({
self
.
class
.
element_name
=>
attributes
},
options
)
else
self
.
class
.
format
.
encode
(
attributes
,
options
)
end
else
self
.
class
.
format
.
encode
(
attributes
,
options
)
end
...
...
activeresource/test/cases/base_test.rb
浏览文件 @
72f89b5d
...
...
@@ -4,17 +4,19 @@
require
"fixtures/street_address"
require
"fixtures/beast"
require
"fixtures/proxy"
require
'active_support/json'
require
'active_support/core_ext/hash/conversions'
require
'mocha'
class
BaseTest
<
Test
::
Unit
::
TestCase
def
setup
@default_request_headers
=
{
'Content-Type'
=>
'application/xml'
}
@matz
=
{
:id
=>
1
,
:name
=>
'Matz'
}.
to_xml
(
:root
=>
'person'
)
@david
=
{
:id
=>
2
,
:name
=>
'David'
}.
to_xml
(
:root
=>
'person'
)
@greg
=
{
:id
=>
3
,
:name
=>
'Greg'
}.
to_xml
(
:root
=>
'person'
)
@addy
=
{
:id
=>
1
,
:street
=>
'12345 Street'
,
:country
=>
'Australia'
}.
to_xml
(
:root
=>
'address'
)
@default_request_headers
=
{
'Content-Type'
=>
'application/xml'
}
@rick
=
{
:name
=>
"Rick"
,
:age
=>
25
}.
to_xml
(
:root
=>
"person"
)
@joe
=
{
'person'
=>
{
:id
=>
6
,
:name
=>
'Joe'
}}.
to_json
@people
=
[{
:id
=>
1
,
:name
=>
'Matz'
},
{
:id
=>
2
,
:name
=>
'David'
}].
to_xml
(
:root
=>
'people'
)
@people_david
=
[{
:id
=>
2
,
:name
=>
'David'
}].
to_xml
(
:root
=>
'people'
)
@addresses
=
[{
:id
=>
1
,
:street
=>
'12345 Street'
,
:country
=>
'Australia'
}].
to_xml
(
:root
=>
'addresses'
)
...
...
@@ -66,6 +68,7 @@ def setup
ActiveResource
::
HttpMock
.
respond_to
do
|
mock
|
mock
.
get
"/people/1.xml"
,
{},
@matz
mock
.
get
"/people/2.xml"
,
{},
@david
mock
.
get
"/people/6.json"
,
{},
@joe
mock
.
get
"/people/5.xml"
,
{},
@marty
mock
.
get
"/people/Greg.xml"
,
{},
@greg
mock
.
get
"/people/4.xml"
,
{
'key'
=>
'value'
},
nil
,
404
...
...
@@ -1012,6 +1015,16 @@ def test_to_xml
assert
xml
.
include?
(
'<id type="integer">1</id>'
)
end
def
test_to_json_including_root
Person
.
include_root_in_json
=
true
Person
.
format
=
:json
joe
=
Person
.
find
(
6
)
json
=
joe
.
encode
Person
.
format
=
:xml
assert_equal
json
,
'{"person":{"person":{"name":"Joe","id":6}}}'
end
def
test_to_param_quacks_like_active_record
new_person
=
Person
.
new
assert_nil
new_person
.
to_param
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录