From 664d646c10943c91f5ac265535ef57e8d840f461 Mon Sep 17 00:00:00 2001 From: Barry Hess Date: Tue, 17 Apr 2012 08:44:00 -0500 Subject: [PATCH] Allow Strings as well as Symbols as #permit parameters. Useful when persisting multi-purpose String arrays to the #permit call. --- lib/action_controller/parameters.rb | 2 +- test/nested_parameters_test.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/action_controller/parameters.rb b/lib/action_controller/parameters.rb index daaf901..fd8a192 100644 --- a/lib/action_controller/parameters.rb +++ b/lib/action_controller/parameters.rb @@ -37,7 +37,7 @@ def permit(*filters) filters.each do |filter| case filter - when Symbol then + when Symbol, String then params[filter] = self[filter] if has_key?(filter) when Hash then self.slice(*filter.keys).each do |key, value| diff --git a/test/nested_parameters_test.rb b/test/nested_parameters_test.rb index 75c4922..826984b 100644 --- a/test/nested_parameters_test.rb +++ b/test/nested_parameters_test.rb @@ -43,6 +43,21 @@ class NestedParametersTest < ActiveSupport::TestCase assert_equal ["Tragedy"], permitted[:book][:genres] end + test "permit may specify symbols or strings" do + params = ActionController::Parameters.new({ + book: { + title: "Romeo and Juliet", + author: "William Shakespeare" + }, + magazine: "Shakespeare Today" + }) + + permitted = params.permit({book: ["title", :author]}, "magazine") + assert_equal "Romeo and Juliet", permitted[:book][:title] + assert_equal "William Shakespeare", permitted[:book][:author] + assert_equal "Shakespeare Today", permitted[:magazine] + end + test "nested array with strings that should be hashes" do params = ActionController::Parameters.new({ book: {