Desculpe por ressuscitar este tópico, mas uma das condições ocorre quando você usa um índice de símbolo, ou seja, custom_fields[:hello], ao atualizar o valor existente. Nesse caso, ele adiciona outro campo em vez de atualizar, resultando em um array. Na minha opinião, essa pode ser a única condição.
Isso deve corrigir o efeito colateral causado com certeza.