docs/howto/add_root_key

Back to Guides

How to add root key

Add the root key to your API is quite simple with ActiveModelSerializers. The Adapter is what determines the format of your JSON response. The default adapter is the Attributes which doesn’t have the root key, so your response is something similar to:

{
  "id": 1,
  "title": "Awesome Post Tile",
  "content": "Post content"
}

In order to add the root key you need to use the JSON Adapter, you can change this in an initializer:

ActiveModelSerializers.config.adapter = :json

Note that adapter configuration has no effect on a serializer that is called
directly, e.g. in a serializer unit test. Instead, something like
UserSerializer.new(user).as_json will always behave as if the adapter were
the ‘Attributes’ adapter. See Outside Controller
Usage
for more details on recommended
usage.

You can also specify a class as adapter, as long as it complies with the ActiveModelSerializers adapters interface.
It will add the root key to all your serialized endpoints.

ex:

{
  "post": {
    "id": 1,
    "title": "Awesome Post Tile",
    "content": "Post content"
  }
}

or if it returns a collection:

{
  "posts": [
    {
      "id": 1,
      "title": "Awesome Post Tile",
      "content": "Post content"
    },
    {
      "id": 2,
      "title": "Another Post Tile",
      "content": "Another post content"
    }
  ]
}

There are several ways to specify root when using the JSON adapter.