ruby-on-rails - 如何解冻哈希?

标签 ruby-on-rails ruby-on-rails-5 ruby-on-rails-6

我有一个来自 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/

相关文章:

mysql - 如何从该数组中提取 ID,而不进行不必要的数据库调用?

ruby - `write' : "\xCF"从 ASCII-8BIT 到 UTF-8 (Encoding::UndefinedConversionError) 从 url 写入文件时

ruby-on-rails - ActionView::Template::Error: 785: '' 处的意外 token

ruby-on-rails - 如何在 Rails 6 中配置 Jasmine?

ruby-on-rails - 如何更改从其中一颗 gem 中加载 gem 的顺序

ruby-on-rails - 如何通过 Rails 6 中的浏览器控制台访问自定义 javascript 函数

ruby-on-rails - 错误 : Undefined variable: "$alert-padding-y"

ruby-on-rails - ActiveRecord::Relation 上下文中的独立 ActiveRecord 查询

ruby-on-rails - 使用 Ruby on Rails 访问 Google Drive API v3

ruby-on-rails - 是否可以在 Rails 6 中使用 .js.erb 文件?