X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ee7753f7095f175c095f94794dd3e33f68d3fcc6..f6f07b1856fc0aa32cdf1f96d5bdeb12e9e314ef:/apps/workbench/app/controllers/application_controller.rb diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index 1e4094dbc1..41d5566885 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -109,8 +109,16 @@ class ApplicationController < ActionController::Base def update updates = params[@object.class.to_s.underscore.singularize.to_sym] updates.keys.each do |attr| - if @object.send(attr).is_a? Hash and updates[attr].is_a? String - updates[attr] = Oj.load updates[attr] + if @object.send(attr).is_a? Hash + if updates[attr].is_a? String + updates[attr] = Oj.load updates[attr] + end + if params[:merge] || params["merge_#{attr}".to_sym] + # Merge provided Hash with current Hash, instead of + # replacing. + updates[attr] = @object.send(attr).with_indifferent_access. + deep_merge(updates[attr].with_indifferent_access) + end end end if @object.update_attributes updates