当前位置: 首页 > 知识库问答 >
问题:

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

史劲
2023-03-14

在使用postman创建新用户时,我收到以下错误:

创建新用户失败:验证失败:名字不能为空,电子邮件不能为空,电子邮件无效;参数:{: email=

邮递员的错误:

{
    "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

共有1个答案

常元章
2023-03-14

ruby on rails控制器可能会将参数包装在一个名称https://API . ruby on rails . org/classes/action controller/params wrapper . html下

您可以通过在控制器顶部设置<code>wrap_parameters false</code>来关闭它,但我不建议这样做!

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

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


def form_params
  params.require(:user).permit(:email, :first_name, :last_name, :password, :phone_number, :ip, :company_name, :user_reference_id)
end

然后在您的方法中获取这些参数,然后合并默认值:

user_creater_attributes = form_params.merge(product_id: product_id, plan: @plan.name, role: 'requester_readonly')
 类似资料:
  • 我有一个API在Apache堆栈上运行,使用Java。我继承了一个遗留代码库,需要找到这个错误来自哪里显然是上一个开发人员构建了一个不能工作的特性,这就是错误所在,但没有更多信息。它使用Drupal webservice模块,发送调用的代码如下所示 我可以从哪里开始寻找这个错误,或者它可能意味着什么,你有什么想法吗? 完整的堆栈跟踪如下所示::: 用户失败:null。java.lang.Unsup

  • SQL*Plus:30 12:51:12 201410月4日发布12.1.0.2.0产品 版权所有(c)1982年,2014年,甲骨文。版权所有。 连接到:Oracle Database 12c Enterprise Edition 12.1.0.2.0版-64位生产,带有分区、OLAP、高级分析和实际应用程序测试选项 SQL 在第1行创建由johndoe*错误标识的用户johndoe:ORA-6

  • - 我运行了此脚本,但出现了此错误。我怎么做?

  • 问题内容: 尝试从教程中制作简单表格时,我收到CSRF验证失败的消息。我对CSRF验证实际上是什么进行了一些研究,据我所知,要使用CSRF验证,你需要在html中使用其中的csrf_token标记之一,但是我没有 这是我的模板: 相当简单,位于contact.html 这是我的urlconf:从 应用程序名称为testapp1。当我键入URL(http:// localhost:8000 / te

  • 我使用poi-jar创建.xlsx文件,poi-3.15.jar,poi-ooxml-

  • 我正在使用一个H2数据库来测试我的Grails应用程序。我有一些简单的领域类,比如: 但是,表似乎没有正确创建。 它设置为在模式下使用临时内存中的H2数据库。