dog.update owners: dog.owners.merge( David: "foose" )
Обновление
Обратите внимание, что комментарий в вашем вопросе показывает, что хеш-ключи символов , т.е.в { "Brad": "bar" }
наличие :
сделает "Brad"
в символе :Brad
в полученном хэше.
Это важно, потому что позже в вашем вопросе вы увидите hash["David"] = "foose"
- это добавлениеновый элемент хэша с строкой ключом "David"
!
Это важно, потому что "David" != :David
так, например:
[11] pry(main)> x = { "David": "symbol" }
=> {:David=>"symbol"}
[12] pry(main)> x["David"] = "string"
=> "string"
[13] pry(main)> x
=> {:David=>"symbol", "David"=>"string"}
Так что будьте осторожнытам.
Второе обновление:)
Все это, как говорится, если это поле только выходит из поля JSON (B) из БД или чего-то еще, тогда фактически все ваши ключи могут быть строками, в этом случае вы должны показать свой хеш с =>
, а не :
(но, возможно, вы показывали необработанный JSON).