Custom_fields atualizado simultaneamente causa que o valor se torne um array.

algo assim? Parece funcionar.

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