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
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
{
"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"
}
}
]
}
I have model User which has many Roles and Role has many Permissions
The UserRepresenter
The RoleRepresenter
When I call it, I receive
includedfor user andincludedfor roles. I think that in Json API there should be only oneincludedfield