Recently I learned that in #ruby on #rails the params that come in a request to the controller are from the type ActionController::Parameters.

Although the params behave like a Hash sometimes (for example in params[:key]), it's not a Hash.

I noticed this when I tried to send Hash#deep_symbolyze_key to an instance of ActionController::Parameters and a NoMethodError was raised.

Note: funny enough, the Hash#deep_symbolyze_key is "monkey-patched" method added by Rails (not present on standard Ruby).