Rails 活动模型序列化程序未设置 root

Cod*_*ash 2 activemodel active-model-serializers

我有一个不是 ActiveRecord 对象的类,我正在尝试为它创建一个 AM 序列化程序。我可以返回正确的 json,但它不包括根

在我的控制器中有这个

format.json { render json: @current_user, root: "current_user" }
Run Code Online (Sandbox Code Playgroud)

我的班级看起来像这样

class CurrentUser 
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :first_name, :last_name, :user_type, :user_id

end
Run Code Online (Sandbox Code Playgroud)

我也试过在控制器中添加这个

 def default_serializer_options
  {root: true}
 end
Run Code Online (Sandbox Code Playgroud)

但是我的 json 对象仍然没有 Ember 模型所需的根

返回对象

{"first_name":"Luke","last_name":"Skywalker","user_type":"Padawan","user_id":12}
Run Code Online (Sandbox Code Playgroud)

我需要

{current_user: {"first_name":"Luke","last_name":"Skywalker","user_type":"Padawan","user_id":12} }
Run Code Online (Sandbox Code Playgroud)

Gra*_* S. 5

对于将来可能遇到同样问题的任何人,在使用ActiveModelSerializers 0.10.x 时,只需添加到现有的初始化程序或创建一个新的初始化程序并添加它以在您的响应中包含根节点:

config/initializers/serializer.rb : ActiveModel::Serializer.config.adapter = :json

AMS 文档指出这对于 0.9.x 和 0.8.x 版本不向后兼容。