我有一个来自 GraphQL 的对象。我需要处理一个字段,然后返回一个 Hash。
为此,我最初尝试使用 to_h
方法。但是当我尝试更改该字段中的值时,出现了这个错误:
FrozenError - can't modify frozen Hash
然后我想到了使用dup
方法的想法。此方法似乎“解冻”了原始对象:
object.to_h.dup
但这对“深”字段没有帮助。对于“深”字段,我必须使用本地 dup
方法。
请问有没有更正确的解决方法?
最佳答案
Rails(或者 ActiveSupport,如果你想学究气的话)补丁 deep_dup
Hash
中的方法进行深度复制。所以你应该能够说:
object.to_h.deep_dup
获取哈希的完全可变版本。
关于ruby-on-rails - 如何解冻哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61012982/