ruby-on-rails - rails 5 api如何修复验证响应?
问题描述
在屏幕截图上,您可以看到验证的响应带有此异常和跟踪。我在整个互联网上进行了盗版搜索,因此正确显示了错误消息和状态,但我没有发现任何可以修复它的东西。
我达到的最接近的是使用模型序列化程序,但问题仍然存在。
def create
@user = User.create!(user_params)
if @user.save
render json: @user.auth_token, status: 201
else
render_json_validation_error @user
end
end
这里的代码:
def render_json_validation_error(resource)
render json: resource, status: 422,
serializer: ActiveModel::Serializer::ErrorSerializer
end
有人不知道如何取消此跟踪和异常?
解决方案
我认为问题在于使用create!
. 如果您添加!
并且验证失败,它将引发带有回溯的错误。尝试删除create!
并改用其中一个,create
或者new
因为它更适合您的用例。基本上你启动一个模型实例,然后尝试.save
它,一旦save
返回 false,你就会呈现验证错误消息:
def create
@user = User.new(user_params)
if @user.save
render json: @user.auth_token, status: 201
else
render_json_validation_error @user
end
end
推荐阅读
- node.js - 如何解析 azure 活动目录令牌,以及如何根据 node.js 中的 azure 令牌获取所有用户详细信息?
- docker - 如何在 Docker v.18.09.3 中停止 docker 之前使用 SystemD 运行 docker 命令
- java - 如何找到可以执行的最大参与者人数?
- dart - 如何在 Flutter with Colors 上设置强制 DropDownButton?
- java - 使用 PDFBox 更快的 PDF 页面尺寸?
- c# - 找不到类型或命名空间名称“OleDbConnection”(您是否缺少 using 指令或程序集引用?)
- javascript - 为什么 Date().toLocaleString 在 nodejs 中返回的值与浏览器不同?
- javascript - 获取“未定义 XMLHttpRequest”
- django - Django + Nginx 项目的 HSTS 标头 - 标头应该由 Django SecurityMiddleware 还是 Nginx 设置?
- selenium - Selenium Web 驱动程序:org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素: