Home > Software design >  Rails override passed request params
Rails override passed request params

Time:12-22

In my Rails 7 API only app I'm receiving the request with these params:

  def event_params
    params.permit(:event, :envelopeId, :action, :recipient)
  end

Inside the controller I need to set a guard based on event_params[:action] like below:

    class EventsController < BaseController
      def event_callback
        return unless event_params[:action] == 'envelopefinished'
        (...)
      end
    end

But it turns out the :action is default ActionController::Parameters parameter that represents the name of the action being performed (i.e., the method being called). Is it possible to get parameter event_params[:action] which was passed inside the JSON file without changing the JSON key name to something else?

CodePudding user response:

Its actually the router that overwrites params[:action] and params[:controller] but you can still access the raw parameters through the request object:

request.POST["action"]

This odd looking method (yeah its a method not a constant) is from Rack::Request::Helpers and gives the parsed parameters from the request body.

  • Related