From 85c31c73baea38742e203c44e1554c4dc932ac00 Mon Sep 17 00:00:00 2001 From: Jean <jmperez127@gmail.com> Date: Fri, 3 Sep 2021 09:26:57 -0400 Subject: [PATCH] FIX: allow single string values on custom multiple select fields and not just arrays (#14236) --- app/controllers/users_controller.rb | 1 + spec/requests/users_controller_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f151b340264..98b8d28e90b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1607,6 +1607,7 @@ class UsersController < ApplicationController if field.field_type == "dropdown" field.user_field_options.find_by_value(field_values)&.value elsif field.field_type == "multiselect" + field_values = Array.wrap(field_values) bad_values = field_values - field.user_field_options.map(&:value) field_values - bad_values else diff --git a/spec/requests/users_controller_spec.rb b/spec/requests/users_controller_spec.rb index abb36a7befe..812a2e6539a 100644 --- a/spec/requests/users_controller_spec.rb +++ b/spec/requests/users_controller_spec.rb @@ -1279,6 +1279,16 @@ describe UsersController do end end + it "should allow single values and not just arrays" do + expect do + put update_user_url, params: { user_fields: { field_id => 'Axe' } } + end.to change { user.reload.user_fields[field_id] }.from(nil).to('Axe') + + expect do + put update_user_url, params: { user_fields: { field_id => %w[Axe Juice Sword] } } + end.to change { user.reload.user_fields[field_id] }.from('Axe').to(%w[Axe Sword]) + end + it "shouldn't allow unregistered field values" do expect do put update_user_url, params: { user_fields: { field_id => %w[Juice] } }