Col*_*bri 3 ruby-on-rails ruby-on-rails-5 ruby-on-rails-6
我有一个来自 GraphQL 的对象。我需要处理一个字段,然后返回一个哈希值。
为此,我最初尝试使用该to_h方法。但是当我尝试更改该字段中的值时,出现此错误:
FrozenError - 无法修改冻结的哈希值
然后我就产生了使用该方法的想法dup。这个方法似乎“解冻”了原始对象:
object.to_h.dup
Run Code Online (Sandbox Code Playgroud)
但这对于“深”领域没有帮助。对于“深层”字段,我必须使用本地dup方法。
请告诉我是否有更正确的解决方案?
Rails(或者 ActiveSupport,如果你想学究气的话)修补了一个进行深层复制的deep_dup方法。Hash所以你应该可以说:
object.to_h.deep_dup
Run Code Online (Sandbox Code Playgroud)
获得哈希的完全可变版本。
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |