Ruby on rails Ruby on Rails-未能创建新用户:验证失败
使用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} 邮递员错误: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=>
{
"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')
您能从日志文件中发布实际参数吗?它可以工作!谢谢你的建议。