Reputation: 1020
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
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