aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2018-09-27 11:55:30 -0400
committerGitHub <noreply@github.com>2018-09-27 11:55:30 -0400
commit140ec68c0dc157d1b3cd481f48dd403b58c74923 (patch)
tree1b3a535541758c574cb68d11957aa3628b7c2500 /actionpack
parentcb6ea5148bffdc6266740e2e7bf30965f3060680 (diff)
parent58e87c3f54d519fc72103ab1bac6d60d26b11577 (diff)
downloadrails-140ec68c0dc157d1b3cd481f48dd403b58c74923.tar.gz
rails-140ec68c0dc157d1b3cd481f48dd403b58c74923.tar.bz2
rails-140ec68c0dc157d1b3cd481f48dd403b58c74923.zip
Merge pull request #33979 from lzap/master
Added ActionController::Parameters.each_value methods
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb8
-rw-r--r--actionpack/test/controller/parameters/accessors_test.rb18
2 files changed, 26 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb
index a37f08d944..c1272ce667 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -348,6 +348,14 @@ module ActionController
end
alias_method :each, :each_pair
+ # Convert all hashes in values into parameters, then yield each value in
+ # the same way as <tt>Hash#each_value</tt>.
+ def each_value(&block)
+ @parameters.each_pair do |key, value|
+ yield [convert_hashes_to_parameters(key, value)]
+ end
+ end
+
# Attribute that keeps track of converted arrays, if any, to avoid double
# looping in the common use case permit + mass-assignment. Defined in a
# method to instantiate it only if needed.
diff --git a/actionpack/test/controller/parameters/accessors_test.rb b/actionpack/test/controller/parameters/accessors_test.rb
index 68c7f2d9ea..9f1fb3d042 100644
--- a/actionpack/test/controller/parameters/accessors_test.rb
+++ b/actionpack/test/controller/parameters/accessors_test.rb
@@ -75,6 +75,24 @@ class ParametersAccessorsTest < ActiveSupport::TestCase
end
end
+ test "each_value carries permitted status" do
+ @params.permit!
+ @params["person"].each_value { |value| assert(value.permitted?) if value == 32 }
+ end
+
+ test "each_value carries unpermitted status" do
+ @params["person"].each_value { |value| assert_not(value.permitted?) if value == 32 }
+ end
+
+ test "each_key converts to hash for permitted" do
+ @params.permit!
+ @params.each_key { |key| assert_kind_of(String, key) if key == "person" }
+ end
+
+ test "each_key converts to hash for unpermitted" do
+ @params.each_key { |key| assert_kind_of(String, key) if key == "person" }
+ end
+
test "empty? returns true when params contains no key/value pairs" do
params = ActionController::Parameters.new
assert_empty params