Ruby on rails Ruby on Rails-未能创建新用户:验证失败

Ruby on rails Ruby on Rails-未能创建新用户:验证失败,ruby-on-rails,validation,postman,Ruby On Rails,Validation,Postman,使用postman创建新用户时,出现以下错误: 创建新用户失败:验证失败:名字不能为空,电子邮件不能为空,电子邮件无效;参数:{:email=>nil,:first\u name=>nil,:last\u name=>nil,:plan=>Basic,:role=>requester\u readonly,:phone\u number=>nil,:company\u name=>nil,:product\u id=>2,:user\u reference\u id=>nil,:handle=>

使用postman创建新用户时,出现以下错误:

创建新用户失败:验证失败:名字不能为空,电子邮件不能为空,电子邮件无效;参数:{:email=>nil,:first\u name=>nil,:last\u name=>nil,:plan=>Basic,:role=>requester\u readonly,:phone\u number=>nil,:company\u name=>nil,:product\u id=>2,:user\u reference\u id=>nil,:handle=>nil}

邮递员错误:

{
    "error": [
        "First name can't be blank",
        "Email can't be blank",
        "Email is invalid"
    ],
    "status": 400
}
{
    "email": "customer@yahoo.com",
    "firstName": "Demo",
    "lastName": "Customer",
    "password": "Password_0",
    "phoneNumber": "0123456789",
    "ip": "10.10.2.125",
    "company": "xyz"
}
我正在将以下值传递给postman中的参数:

{
    "error": [
        "First name can't be blank",
        "Email can't be blank",
        "Email is invalid"
    ],
    "status": 400
}
{
    "email": "customer@yahoo.com",
    "firstName": "Demo",
    "lastName": "Customer",
    "password": "Password_0",
    "phoneNumber": "0123456789",
    "ip": "10.10.2.125",
    "company": "xyz"
}
这是用户注册的功能:

def register
        product_id = $product_id
        if params[:plan]
        @plan = AppCommon::Plan.where(name: params[:plan], product_id: product_id).first
      end
      @plan = @plan || AppCommon::Plan.find_default(product_id)

          form_params = {email: params[:email], first_name: params[:firstName], last_name: params[:lastName], password: params[:password], plan: @plan.name, role: 'requester_readonly', phone_number: params[:phoneNumber], ip: params[:ip], company_name: params[:company], product_id: product_id, user_reference_id: params[:referenceId]}
          service = Web::UserCreater.new(form_params)
        result = service.perform
        @user = service.user
        if result.success?
          render json: {status: 200, authentication_token: @user.authentication_token}
        else
          error_response(@user.errors.full_messages.to_a)
        end
      end

可能RubyonRails控制器正在用一个名称包装参数

您可以通过在控制器顶部设置
wrap_parameters false
将其关闭,但我不建议这样做

您可能会打印/记录整个参数,以查看它们的外观,并可能允许它们

form_params
拉入它自己的方法,需要param包装器,然后允许您需要的内容


def form_参数
参数require(:user).permit(:email、:first_name、:last_name、:password、:phone_number、:ip、:company_name、:user_reference_id)
结束
然后在方法中获取这些参数,然后合并默认值:

user\u creater\u attributes=form\u params.merge(产品标识:产品标识,计划:@plan.name,角色:'requester\u readonly')

您能从日志文件中发布实际参数吗?它可以工作!谢谢你的建议。