Ruby on rails 对象保存失败时数据为根的activemodel序列化程序

Ruby on rails 对象保存失败时数据为根的activemodel序列化程序,ruby-on-rails,ruby,active-model-serializers,Ruby On Rails,Ruby,Active Model Serializers,我正在为我的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, ro

我正在为我的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时,它返回时不带数据作为根。例如:

{
  "email": [
    "has already been taken"
  ]
}

我不确定我遗漏了什么,但我只希望api将数据作为根返回给同样失败的场景。顺便说一句,用户序列化程序只包含id属性。

您可以在json中指定它:

def render_error(errors, status = :unprocessable_entity)
  meta = { count: errors.messages.count }
  render json: { data: errors }, status: status, meta: meta
end
def render_error(errors, status = :unprocessable_entity)
  meta = { count: errors.messages.count }
  render json: { data: errors }, status: status, meta: meta
end