Rails ActiveModelSerializers - 渲染所有CRUD时序列化器不工作

时间:2018-02-19 01:26:20

标签: ruby-on-rails active-model-serializers

在进行创建或更新时,我通常会像这样编写控制器:

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": {
        ...
    }
}

1 个答案:

答案 0 :(得分:0)

  

经过测试的版本active_model_serializers (0.10.6)一切正常   很好,包括自定义消息和用户序列化器。

    render status: 200, json: {
        message: "Successfully updated user.",
        menu: UserSerializer.new(user)
    }.to_json