在进行创建或更新时,我通常会像这样编写控制器:
def update
if current_user.update(user_params)
render status: 200, json: {
message: "Successfully updated user.",
user: current_user
}.to_json
else
render status: 422, json: {
errors: current_user.errors
}
end
end
你可以看到,我想传递一个自定义消息和我的用户对象。但是当我这样做时,它不使用UserSerializer ......我尝试使用This:
render status: 200, json: {
message: "Successfully updated user.",
user: ActiveModel::Serializer::UserSerializer.new(user)
}.to_json
这有效......但是如果有一个null的对象会导致问题......它会导致Rails错误。
有没有更好的方法来处理这个问题,而不必花费大量时间重新编写我的几十个创建/更新控制器?
具体来说,我希望返回看起来像这样的JSON:
{
"message": "Successfully updated user.",
"user": {
...
}
}
答案 0 :(得分:0)
经过测试的版本
active_model_serializers (0.10.6)
一切正常 很好,包括自定义消息和用户序列化器。
render status: 200, json: {
message: "Successfully updated user.",
menu: UserSerializer.new(user)
}.to_json