Попытка настроить серверную часть для приложения ember-cli. Вот как модели выглядят в Ember:
post.js
export default DS.Model.extend({
heading: DS.attr('string'),
content: DS.attr(''),
imageUrl: DS.attr('string'),
pageId: DS.belongsTo('page'),
tagIds: DS.hasMany('tag')
});
tag.js
export default DS.Model.extend({
name: DS.attr('string'),
postIds: DS.hasMany('post')
});
Модели в Rails и Active Record — это просто Post, Tag и Theme. Тема объединяет Post и Tag. (т.е. опубликовать has_many :tags, через: :themes)
Вот как выглядят мои сериализаторы:
class PostSerializer < ActiveModel::Serializer
embed :ids, include: true
attributes :id, :heading, :content, :image_url
has_many :tags
end
class TagSerializer < ActiveModel::Serializer
embed :ids, include: true
attributes :id, :name
end
Это работает в одном направлении: поисковые сообщения также получат все теги. В другом не работает, потому что у меня нет has_many в TagSerializer. Однако, если я поставлю has_many в оба сериализатора, будет слишком глубокая ошибка уровня стека.
Итак, я думаю, мой вопрос: каков типичный способ реализации отношений «многие ко многим» с сериализатором ActiveModel? Кажется, я не могу найти никаких ресурсов о том, как настроить это в серверной части Rails. Любая помощь будет оценена по достоинству. Спасибо!