空文字を許容するのかしないのか混乱したので、メモっておきます。
my-app(dev):002> params = ActionController::Parameters.new(a: "") => #<ActionController::Parameters {"a" => ""} permitted: false> my-app:003(dev)> params.expect :a (my-app):3:in '<main>': param is missing or the value is empty or invalid: a (ActionController::ParameterMissing)
require と同じ動きです。
my-app(dev):004> params.require :a (my-app):4:in '<main>': param is missing or the value is empty or invalid: a (ActionController::ParameterMissing)