Вы должны использовать Hash#merge!
метод:
Result['UserCreation'].merge!({"Test2"=>"Kali"})
Вот краткое объяснение:
Когда вы используете назначение (Result['UserCreation']={"Test2"=>"Kali"}
) вы полностью заменяете значение для конкретного хеш-ключа.Если вы хотите добавить (объединить) что-то в существующий хеш, вы должны использовать метод merge!
.
Обратите внимание, что вы можете использовать метод Hash#merge!
, потому что вы знаете, что значение Result['UserCreation']
само является хешем.
Также обратите внимание, что есть метод merge
без взрыва (!
).Разница в том, что bang-версия будет мутировать (изменять) ваш объект.Подумайте об этом:
hash = {}
hash.merge({'one' => 1})
# hash variable will hold its initial value
# because `merge` method will not change it.
p hash # => {}
hash.merge!('one' => 1)
# This time we use bang-version, so hash variable
# will be updated.
p hash # => {"one"=>1}
Еще одна вещь о Ruby, обратите внимание, как в версии bang мы опускаем фигурные скобки.Это можно сделать, если последний аргумент , передаваемый методу, является хешем.
Кроме того, по соглашению в Ruby snake-case использует переменную иназвание метода, то есть
result = {}
result['user_creation'] = {'test_1' => 'Rajagopalan'}
result['user_creation'].merge!('test_2' => 'Kali')
Конечно, есть поле для игры.Например, вы можете установить начальное значение следующим образом:
result = {'user_creation' => {}}
result['user_creation'].merge!('test_1' => 'Rajagopalan')
result['user_creation'].merge!('test_2' => 'Kali')
или обновить событие несколькими парами:
result = {'user_creation' => {}}
result['user_creation'].merge!(
'test_1' => 'Rajagopalan',
'test_2' => 'Kali'
)
ОБНОВЛЕНИЕ
ДляВ вашем случае, если вы получите эти параметры:
'UserCreation',{"Test1"=>"Rajagopalan"},
'UserCreation',{"Test2"=>"Kali"}
'contactcreate',{"Test2"=>"Kali"}
предположим, что первый параметр с именем kind
и последний с именем value
:
# kind = 'UserCreation' and value = '{"Test1"=>"Rajagopalan"}'.
result = {}
# Here we check `result[kind]` if there's no key, a new hash will
# be assigned, otherwise the existing value will be used.
result[kind] ||= {}
result[kind].merge!(value)