diff options
author | Matthew Draper <matthew@trebex.net> | 2014-06-14 05:53:45 +0930 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2014-06-14 06:14:19 +0930 |
commit | 497def80b53db73712a6abf2c066e9bc4980ccd2 (patch) | |
tree | 0781c2304c05e1d5eef7661351f05ab03f3a26ad /actionpack | |
parent | 49fee3d271e52a44a7bc7fcbbcb00792b613b7df (diff) | |
parent | 540d1535316d6ecbe755ee66dfcbc23dc0bde3a5 (diff) | |
download | rails-497def80b53db73712a6abf2c066e9bc4980ccd2.tar.gz rails-497def80b53db73712a6abf2c066e9bc4980ccd2.tar.bz2 rails-497def80b53db73712a6abf2c066e9bc4980ccd2.zip |
Merge pull request #15692 from sromano/falseClass
ActionController::Parameters#require now accepts FalseClass values
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 6 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/strong_parameters.rb | 7 | ||||
-rw-r--r-- | actionpack/test/controller/required_params_test.rb | 18 |
3 files changed, 29 insertions, 2 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index 5474f5dd58..a9a00dcb6d 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,9 @@ +* ActionController::Parameters#require now accepts `false` values. + + Fixes #15685. + + *Sergio Romano* + * With authorization header `Authorization: Token token=`, `authenticate` now recognize token as nil, instead of "token". diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index c3c3e4c4f1..b70962cf44 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -184,7 +184,12 @@ module ActionController # ActionController::Parameters.new(person: {}).require(:person) # # => ActionController::ParameterMissing: param not found: person def require(key) - self[key].presence || raise(ParameterMissing.new(key)) + value = self[key] + if value.present? || value == false + value + else + raise ParameterMissing.new(key) + end end # Alias of #require. diff --git a/actionpack/test/controller/required_params_test.rb b/actionpack/test/controller/required_params_test.rb index 25d0337212..6803dbbb62 100644 --- a/actionpack/test/controller/required_params_test.rb +++ b/actionpack/test/controller/required_params_test.rb @@ -24,10 +24,26 @@ class ActionControllerRequiredParamsTest < ActionController::TestCase post :create, { book: { name: "Mjallo!" } } assert_response :ok end + + test "required parameters with false value will not raise" do + post :create, { book: { name: false } } + assert_response :ok + end end class ParametersRequireTest < ActiveSupport::TestCase - test "required parameters must be present not merely not nil" do + + test "required parameters should accept and return false value" do + assert_equal(false, ActionController::Parameters.new(person: false).require(:person)) + end + + test "required parameters must not be nil" do + assert_raises(ActionController::ParameterMissing) do + ActionController::Parameters.new(person: nil).require(:person) + end + end + + test "required parameters must not be empty" do assert_raises(ActionController::ParameterMissing) do ActionController::Parameters.new(person: {}).require(:person) end |