Skip to content

double included fields #26

@twiduch

Description

@twiduch

I have model User which has many Roles and Role has many Permissions
The UserRepresenter

class UserRepresenter < BaseRepresenter
  type :users

  link :self, toplevel: true do
    "/users"
  end

  attributes do
    property :first_name
    property :last_name
  end

  link(:self) { "/users/#{represented.id}" }
  link(:all) { "/users" }

  has_many :roles, class: Role, decorator: RoleRepresenter do
    relationship do
      link(:related)  {"/users/#{represented.id}/roles"}
    end
  end
end

The RoleRepresenter

class RoleRepresenter < BaseRepresenter
  type :roles

  link :self, toplevel: true do
    "/roles"
  end

  attributes do
    property :name
  end

  link :self do
    "/roles/#{represented.id}"
  end

  has_many :permissions, decorator: PermissionRepresenter
end

When I call it, I receive included for user and included for roles. I think that in Json API there should be only one included field

{
  "data": {
    "relationships": {
      "roles": {
        "data": [
          {
            "id": "1",
            "type": "roles"
          }
        ],
        "links": {
          "related": "/users/2/roles"
        }
      }
    },
    "id": "2",
    "attributes": {
      "first-name": "Lady",
      "last-name": "Gaga",
    },
    "type": "users",
    "links": {
      "self": "/users/2",
      "all": "/users"
    }
  },
  "included": [
    {
      "relationships": {
        "permissions": {
          "data": [
            {
              "id": "4",
              "type": "permissions"
            },
            {
              "id": "15",
              "type": "permissions"
            }
          ]
        }
      },
      "included": [
        {
          "id": "4",
          "attributes": {
            "name": "View project",
          },
          "type": "permissions",
          "links": {
            "self": "/permissions/4"
          }
        },
        {
          "id": "15",
          "attributes": {
            "name": "View project user",
          },
          "type": "permissions",
          "links": {
            "self": "/permissions/15"
          }
        }
      ],
      "id": "1",
      "attributes": {
        "name": "Project User",
      },
      "type": "roles",
      "links": {
        "self": "/roles/1"
      }
    }
  ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions