我有一个深度嵌套的对象,我希望得到一个'dup'版本,其中一个嵌套属性被更新。
假设我们有一个Country
,City
,State
,Person
。Country
有city
和state
。City
有persons
。
下面是Country
的示例,比如country_sample
{
"id"=>16,
"city"=>
[{"id"=>22,
"person"=>
[{"id"=>11,
"uuid"=>"20ac322f-5f62-4786-b14b-73e4cc2a9f38",
"updated_at"=>"2020-11-12T02:59:53.000Z"}]},
{"id"=>23,
"person"=>
[{"id"=>12,
"uuid"=>"196e8d33-9b2f-4aab-a2eb-1bda645abc31",
"updated_at"=>"2020-11-12T02:59:53.000Z"}]},
{"id"=>24,
"person"=>[]}],
"state"=>
[{"id"=>10,
"given_name"=>"SomeState",
"updated_at"=>"2020-11-12T02:59:53.000Z"}],
"other_prop"=>"val"
}
我需要(任一作品):
1.我想用id
24
向city
添加一个新的人,然后需要整个对象的dup
版本
1.我想获得dup
版本,并使用id
24
将新用户添加到city
我面临的问题是:当我运行dup_country = country_sample.dup
时,我没有得到嵌套的属性。
我得到的是
{
"id"=>nil,
"city"=>[],
"state"=>[],
"other_prop"=>"val"
}
正如您所看到的,所有嵌套的属性都不在那里。我尝试了一堆其他处理dup的gem,比如(full_dup
,deep_dup
,deep_dive
),但都没有成功。我想知道哪里出了问题?
更新日期:
虽然deep_dup
适用于https://apidock.com/rails/Hash/deep_dup上发布的示例,但我在我拥有的对象上进行了尝试,它仍然具有与dup
相同的效果。
1条答案
按热度按时间kyvafyod1#
amoeba
gem在对模型进行了一些更改后运行良好。country_deep_dupped = country.amoeba_dup
以获取deep-dup
版本,该版本也返回嵌套对象的dup
版本。