首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当对象保存失败时,以数据为根的激活模型序列化程序

问当对象保存失败时,以数据为根的激活模型序列化程序
EN

Stack Overflow用户
提问于 2016-01-22 04:09:46
回答 1查看 405关注 0票数 1

我使用activemodel for my api来序列化数据模型。

代码语言:javascript
复制
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用户身份返回数据。例如:

代码语言:javascript
复制
{
  "data": {
    "id": 11
  }
}

但是,当参数无效且用户对象未保存到db时,它将返回不带数据的root用户。示例:

代码语言:javascript
复制
{
  "email": [
    "has already been taken"
  ]
}

我不确定我错过了什么,但我只希望api在同样失败的情况下以root的身份返回数据。顺便说一句,用户序列化程序只包含id属性。

EN

回答 1

Stack Overflow用户

发布于 2016-01-24 01:26:44

您可以在json中指定它:

代码语言:javascript
复制
def render_error(errors, status = :unprocessable_entity)
  meta = { count: errors.messages.count }
  render json: { data: errors }, status: status, meta: meta
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34933357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档