Как разморозить Ха sh? - PullRequest
       22

Как разморозить Ха sh?

0 голосов
/ 03 апреля 2020

У меня есть объект из GraphQL. Мне нужно обработать одно поле, а затем вернуть Ha sh.

. Для этого я изначально пытался использовать метод to_h. Но когда я попытался изменить значение в поле, я получил эту ошибку:

FrozenError - не могу изменить замороженный Ха sh

Затем я подошел с идеей использования метода dup. Этот метод, кажется, «размораживает» исходный объект:

object.to_h.dup

Но это не помогает для «глубоких» полей. Для «глубоких» полей мне пришлось использовать локальный метод dup.

Скажите, пожалуйста, есть ли более правильное решение проблемы?

1 Ответ

1 голос
/ 03 апреля 2020

Rails (или ActiveSupport, если вы хотите быть pedanti c) исправляет метод deep_dup в Hash, который делает глубокое копирование. Таким образом, вы должны иметь возможность сказать:

object.to_h.deep_dup

, чтобы получить полностью изменяемую версию вашего Ha sh.

...