Обновление custom_fields одновременно приводит к преобразованию значения в массив

что-то вроде этого? Похоже, работает.

DistributedMutex.synchronize("user_data_update_#{user.id}") do
    user.save_custom_fields(true)
end