Objetos de carregamento lateral com nomes de classe não padrão em EmberJS com Rails + active_model_serializers

Eu tenho alguns modelos no Rails que são parecidos com isto:

class Issue < ActiveRecord::Base
  belongs_to :reporter, class_name: 'User'
  belongs_to :assignee, class_name: 'User'
  has_many :comments
end

class User < ActiveRecord::Base
end

class Comment < ActiveRecord::Base
end

com serializadores assim:

class IssueSerializer < ActiveModel::Serializer
  attributes :id
  embed :ids, include: true

  has_one :reporter, :embed => :ids
  has_one :assignee, :embed => :ids
end

class UserSerializer < ActiveModel::Serializer
  attributes :id, :name
end

class CommentSerializer < ActiveModel::Serializer
  attributes :id, :body
end

Isso produz JSON que se parece com o seguinte:

{
  "issues": [
    {
      "id": 6,
      "reporter_id": 1,
      "assignee_id": 2,
      "comment_ids": [
        3
      ]
    },
  ],
  "comments": [
    {
      "id": 3
      "body": "Great comment"
    }
  ],
  "reporters": [
    {
      "id": 1
      "name": "Ben Burton"
    }
  ],
  "assignees": [
    {
      "id": 2
      "name": "Jono Mallanyk"
    }
  ]
}

O problema é que os objetos JSON de repórteres e destinatários carregados de lado não são reconhecidos pelo Ember como objetos User e vejo o seguinte erro:

Uncaught Error: assertion failed: Your server returned a hash with the key reporters but you have no mapping for it

Não quero remover

embed :ids, include: true

do meu IssueSerializer, porque os comentários não seriam serializados.

Existem algumas maneiras possíveis de resolver isso que eu considerei:

Se o método embed para ActiveModel :: Serializer aceitasse uma lista de modelos em sua opção include, isso poderia filtrar a resposta JSON para incluir somente comentários com carga lateral.O modelo de dados da Ember pode ser configurado para carregar usuários de "usuários", "repórteres" e "responsáveis" ... mas, até onde eu sei, a fonte só parece suportar uma chave para sideloadAs.De alguma forma, ignore / desative erros de carregamento lateral para chaves desconhecidas (provavelmente a abordagem menos sensata).

Existe outra opção que estou perdendo aqui? Acho que posso ter que escrever uma correção e enviar uma solicitação pull para rails-api / active_model_serializers, emberjs / data ou ambos.

EDITAR: Minha solução temporária para isso é alterar o IssueSerializer para apenas serializar os IDs para o repórter e o responsável:

class IssueSerializer < ActiveModel::Serializer
  attributes :id, :reporter_id, :assignee_id
  embed :ids, include: true

  has_many :comments, :embed => :ids
end

questionAnswers(3)

yourAnswerToTheQuestion