【发布时间】:2016-01-27 19:58:35
【问题描述】:
假设我获取了一些活动资源对象,如下所示:
x = Resource.find(some_id)
并且远程服务器中的 x 有一些字段 h 作为复杂的嵌套哈希,这里表示为嵌套的活动资源对象,但是访问它是一项繁琐的任务,因此可以将 h 转换为哈希?我可以再次调用 Resource.get(some_id) ,结果将是一个大哈希,但这是有风险的,因为资源(理论上)可能在后续调用之间发生了变化,所以有没有办法将活动资源对象转换为哈希?
编辑
为了更清楚,假设某些发票记录 r[id=some_id] 具有属性extras,这是一个哈希值:{:x=>1, :y=>2, :z=>{:a=>1, :b=>2}}
然后当通过活动资源获取这条记录时,我们得到以下extras字段的结果,-extracted from the response-:
"extras"=>
#<App::Invoice::Extras:0x00000008202cb0
@attributes=
{"x"=>1,
"y"=>2,
"z"=>
#<App::Invoice::Extras::Z:0x00000008201978
@attributes={"a"=>1, "b"=>2},
@persisted=true,
@prefix_options={}>},
@persisted=true,
@prefix_options={}>,
那么如何将这个 extras 字段转换为 ruby 哈希?
【问题讨论】:
-
你能举一个更详细的例子来说明你可能想要做什么吗?
-
你可以试试
Resource.find(some_id).as_json -
@ArupRakshit 以及 as_json 只是将响应的第一级转换为哈希,所以我们现在有 x["extras"] 而不是 x.extras,但是 extras 的值是相同的旧 active资源对象。然而 JSON.parse(x._to_json) 成功了:)
标签: ruby-on-rails activeresource