【问题标题】:Rails controller parameters are different from sending parametersRails 控制器参数与发送参数不同
【发布时间】:2021-08-27 20:41:27
【问题描述】:

Rails 参数与实际发送参数不同

邮递员发送的参数:

{
"first_name": "Arun",
"last_name": "Deepak",
"email": "arun.deepak@abc.com",
"password": "Abc@123",
"confirm_pasword": "Abc@123",
"user_type": "seller"
}

控制器中的参数:

{
"first_name"=>"Arun", "last_name"=>"Deepak",
"email"=>"arun.deepak@abc.com",
"password"=>"[FILTERED]", "confirm_pasword"=>"Abc@123",
"user_type"=>"seller",
"user"=>{"email"=>"arun.deepak@abc.com", "user_type"=>"seller"}
}

控制器

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

铁路路线:

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

这里,控制器中的参数如何变化?

我知道我发送了错误的参数,但 user_params 如何接受错误的参数?

请求参数是如何修改的?

【问题讨论】:

    标签: ruby-on-rails strong-parameters


    【解决方案1】:

    控制器中的参数不会改变。也许您正尝试将first_namelast_name 作为用户参数发送。它在用户创建期间给你一个错误。那是因为你的user_params 方法只返回用户下的参数,使用这个params.require(:user)

    Parameters: {
      "user": {
        "email": "arun.deepak@abc.com",
        "user_type": "seller",
        "first_name": "Arun",
        "last_name": "Deepak",
        "password": "[FILTERED]",
        "confirm_pasword": "Abc@123"
      }
    }
    

    【讨论】:

    • 我发送了错误的参数,但为什么允许?以及它是如何修改的?
    • 如果您使用的是 Postman,那么您可以轻松添加 user[email]user[first_name] 等参数
    • 我是说我发送了错误的参数,但系统正在接受这怎么可能?
    • 我不知道你的项目实际发生了什么?‍♂️
    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2015-11-21
    • 1970-01-01
    • 2020-01-24
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多