Загрузка объектов с нестандартными именами классов в EmberJS с помощью Rails + active_model_serializer

У меня есть несколько моделей в Rails, которые выглядят примерно так:

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

с сериализаторами вроде так:

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

Это создает JSON, который выглядит примерно так:

{
  "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"
    }
  ]
}

Проблема в том, что загруженные сбоку объекты JSON для репортеров и уполномоченных не распознаются Ember как объекты пользователя, и я вижу следующую ошибку:

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

Я не хочу удалять

embed :ids, include: true

от моего IssueSerializer, потому что тогда комментарии не будут сериализованы.

Есть несколько потенциальных способов решения этой проблемы, которые я рассмотрел:

Если метод встраивания для ActiveModel :: Serializer принял список моделей в своем параметре включения, это может отфильтровать ответ JSON, чтобы включить только комментарии с боковой загрузкой.Модель данных Ember может быть настроена для боковой загрузки пользователей из «users», «reporters» и «assignees» ... но, насколько я могу судить из источника, кажется, что поддерживается только один ключ для sideloadAs.Каким-то образом игнорируйте / отключайте ошибки боковой загрузки для неизвестных ключей (вероятно, наименее вменяемый подход).

Есть ли другой вариант, который я здесь упускаю? Я думаю, что мне, возможно, придется написать исправление и отправить запрос на выборку либо rails-api / active_model_serializers, emberjs / data, либо обоим.

РЕДАКТИРОВАТЬМой временный обходной путь для этого состоит в том, чтобы изменить IssueSerializer, чтобы только сериализовать идентификаторы для репортера и уполномоченного:

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

  has_many :comments, :embed => :ids
end

Ответы на вопрос(3)

Ваш ответ на вопрос