Skip to content

Commit 7de3400

Browse files
authored
Merge pull request rails#49749 from fatkodima/fix-extract_value
Fix `StrongParameters#extract_value` to include blank values
2 parents 55bf2df + 97ae6e7 commit 7de3400

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

actionpack/lib/action_controller/metal/strong_parameters.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -967,8 +967,14 @@ def deep_dup
967967
# params.extract_value(:id) # => ["1", "123"]
968968
# params.extract_value(:tags, delimiter: ",") # => ["ruby", "rails"]
969969
# params.extract_value(:non_existent_key) # => nil
970+
#
971+
# Note that if the given +key+'s value contains blank elements, then
972+
# the returned array will include empty strings.
973+
#
974+
# params = ActionController::Parameters.new(tags: "ruby,rails,,web")
975+
# params.extract_value(:tags) # => ["ruby", "rails", "", "web"]
970976
def extract_value(key, delimiter: "_")
971-
@parameters[key]&.split(delimiter)
977+
@parameters[key]&.split(delimiter, -1)
972978
end
973979

974980
protected

actionpack/test/controller/parameters/accessors_test.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,11 +425,13 @@ class ParametersAccessorsTest < ActiveSupport::TestCase
425425
test "#extract_value splits param by delimiter" do
426426
params = ActionController::Parameters.new(
427427
id: "1_123",
428-
tags: "ruby,rails,web"
428+
tags: "ruby,rails,web",
429+
blank_tags: ",ruby,,rails,"
429430
)
430431

431432
assert_equal(["1", "123"], params.extract_value(:id))
432433
assert_equal(["ruby", "rails", "web"], params.extract_value(:tags, delimiter: ","))
434+
assert_equal(["", "ruby", "", "rails", ""], params.extract_value(:blank_tags, delimiter: ","))
433435
assert_nil(params.extract_value(:non_existent_key))
434436
end
435437
end

0 commit comments

Comments
 (0)