Ruby on rails 我不断地得到;密码可以';“不要空白”;在Rails中创建新用户时出错
我在Rails API中创建了一个简单的用户身份验证。我已经搜索了这里能找到的每一个答案,我根本不知道我做错了什么。不管怎样,当我尝试创建一个新用户时,我会得到一个错误“密码不能为空” 这是我的控制器代码:Ruby on rails 我不断地得到;密码可以';“不要空白”;在Rails中创建新用户时出错,ruby-on-rails,validation,authentication,activerecord,bcrypt,Ruby On Rails,Validation,Authentication,Activerecord,Bcrypt,我在Rails API中创建了一个简单的用户身份验证。我已经搜索了这里能找到的每一个答案,我根本不知道我做错了什么。不管怎样,当我尝试创建一个新用户时,我会得到一个错误“密码不能为空” 这是我的控制器代码: class UsersController < ApplicationController def create user = User.new(user_params) if user.save render json: {user: user},
class UsersController < ApplicationController
def create
user = User.new(user_params)
if user.save
render json: {user: user}, status: 201
else
render json: {errors: user.errors.full_messages}
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
我一直得到的错误是:
{
"errors": [
"Password can't be blank",
"Password can't be blank",
"Password is too short (minimum is 8 characters)",
"Password confirmation can't be blank"
]
}
我知道这个问题还有其他答案,但我已经把它们一行一行地梳理了一遍,我看不出我做错了什么。据我所知,所有字段都是允许的,并且拼写正确
我非常感谢任何帮助。谢谢大家! 我知道这很难直接回答你的问题,但在我看来,这会有所帮助。使用这个名为。基本上,安装它,然后将
byebug
放在用户保存到控制器之前。当它执行代码时,它将挂起服务器,直到您在“服务器”选项卡中键入“继续”。在键入continue之前,您可以像rails控制台一样使用服务器选项卡,调试参数的当前状态等等。希望这能帮助您调试您的问题。我知道这很难直接回答您的问题,但在我看来,这会有所帮助。使用这个名为。基本上,安装它,然后将byebug
放在用户保存到控制器之前。当它执行代码时,它将挂起服务器,直到您在“服务器”选项卡中键入“继续”。在键入continue之前,您可以像rails控制台一样使用服务器选项卡,调试参数的当前状态等等。希望这能帮助您调试问题。您好,请检查控制器中的参数。当前您只传递参数。参数将是用户。只需尝试使用用户参数
{“用户”:{“名称”:“测试”}
嗨,检查控制器中的参数。当前您只传递参数。参数将是用户。只需尝试使用用户参数 {“用户”:{“名称”:“测试”}
感谢Rajkumar的回答。最初,我的前端发送一个JSON对象,如下所示:
{
"name": "Someone",
"password": "a_password",
...
}
但是Rails期望一个被包装在用户
散列中,如下所示:
{
"user": {
"name": "Somebody",
"password": "a_password",
...
}
}
谢谢大家的帮助 感谢拉吉库马尔的回答。最初,我的前端发送一个JSON对象,如下所示:
{
"name": "Someone",
"password": "a_password",
...
}
但是Rails期望一个被包装在用户
散列中,如下所示:
{
"user": {
"name": "Somebody",
"password": "a_password",
...
}
}
谢谢大家的帮助 如果手动测试,您是否可以发布正在发送的
params
,如果正确测试,是否可以发布测试代码本身?当我在rails控制台中测试时,我能够通过验证,但当我在Postman中输入此json对象时,我会收到错误。这让我觉得我的问题一定在控制器文件中,而不是模型文件中。Json参数:{“name”:“Jim Nobody”,“email”:jim@nowhere.com“,“password”:“12345678”,“password_confirmation”:“12345678”}
您可以查看rails服务器日志并发布一个示例请求吗?这通常包括发送到服务器的参数。您是否有密码\u摘要
属性?可能在以下位置失败:record.errors.add(:password,:blank),除非record.password\u digest.present?
如果手动测试,是否可以发布发送的params
,如果测试正确,是否可以发布测试代码本身?当我在rails控制台中测试时,我能够通过验证,但是当我在Postman中输入这个json对象时,我得到了错误。这让我觉得我的问题一定在控制器文件中,而不是模型文件中。Json参数:{“name”:“Jim Nobody”,“email”:jim@nowhere.com“,“password”:“12345678”,“password_confirmation”:“12345678”}
您可以查看rails服务器日志并发布一个示例请求吗?这通常包括发送到服务器的参数。您是否有密码\u摘要
属性?可能在以下位置失败:record.errors.add(:password,:blank),除非record.password\u digest.present?
谢谢!我发现,当我检查user.password时,它是空的,即使我正在传递它。实际上,我需要将所有json参数封装在一个更大的“user”参数中,以便Rails端能够识别它们。谢谢!我发现,当我检查user.password时,它是空的,即使我正在传递它。实际上,我需要将所有json参数封装在一个更大的“user”参数中,以便Rails端能够识别它们!前端的JSON对象需要用user
散列进行包装。{“user”:{“name”:“someone”,“email”:.“…}}}
就是这样!前端的我的JSON对象需要包装在一个user
散列中。{“user”:{“name”:“someone”,“email”:.“..}}