[英]activemodel serializers with data as root when object is failed to save
我正在为我的api使用activemodel序列化程序来序列化数据模型。
class Api::V1::UsersController < Api::V1::ApiController
include ::ActionController::Serialization
def create
user = User.new(user_params)
if user.save
return render json: user, status: :ok, root: :data
end
render_error(user.errors)
end
private
def user_params
params.require(:user).permit(:email, :password)
end
def render_error(errors, status = :unprocessable_entity)
meta = { count: errors.messages.count }
render json: errors, status: status, meta: meta, root: :data
end
end
当用户参数有效并将其保存到db时,api将以root用户身份返回数据。 例如:
{
"data": {
"id": 11
}
}
但是,当参数无效且用户对象未保存到db时,它将作为根返回而没有数据。 例:
{
"email": [
"has already been taken"
]
}
我不确定缺少什么,但是我只想让api以root身份返回数据,以解决失败的情况。 顺便说一句,用户序列化程序仅包含id属性。
您可以在json中指定它:
def render_error(errors, status = :unprocessable_entity)
meta = { count: errors.messages.count }
render json: { data: errors }, status: status, meta: meta
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.