Kanna
Kanna

Reputation: 1020

Rails controller parameters are different from sending parameters

Rails parameters are different actual sending parameters

Parameters sending from the postman:

{
"first_name": "Arun",
"last_name": "Deepak",
"email": "[email protected]",
"password": "Abc@123",
"confirm_pasword": "Abc@123",
"user_type": "seller"
}

Params in controller:

{
"first_name"=>"Arun", "last_name"=>"Deepak",
"email"=>"[email protected]",
"password"=>"[FILTERED]", "confirm_pasword"=>"Abc@123",
"user_type"=>"seller",
"user"=>{"email"=>"[email protected]", "user_type"=>"seller"}
}

Controller:

def create
  @user = User.create!(user_params)
  render json: @user
end
...
def user_params
  params.require(:user).permit(:email, :user_type, :password, :password_confirmation)
end

Rails routes:

namespace :api do
  namespace :v1 do
    resources :users
  end
end

Here, How is the parameter changing in the controller?

I know I'm sending the wrong parameters but How are user_params accepting the wrong parameters?

How the request parameters have been modified?

Upvotes: 0

Views: 141

Answers (1)

Daniyal Basit Khan
Daniyal Basit Khan

Reputation: 286

The params don't get changed in the controllers. Maybe you are trying to send first_name and last_name as user params. And it is giving you an error during user creation. That's because your user_params method is only returning params that are under the user, using this params.require(:user).

Parameters: {
  "user": {
    "email": "[email protected]",
    "user_type": "seller",
    "first_name": "Arun",
    "last_name": "Deepak",
    "password": "[FILTERED]",
    "confirm_pasword": "Abc@123"
  }
}

Upvotes: 1

Related Questions