【发布时间】:2014-11-08 04:21:00
【问题描述】:
尝试为 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
这在一个方向上起作用:搜索帖子也将获得所有标签。在另一个中不起作用,因为我在 TagSerializer 中没有 has_many。但是,如果我在两个序列化器中都放了一个 has_many,就会出现堆栈级别太深的错误。
所以我想我的问题是:用 ActiveModel 序列化器实现多对多关系的典型方法是什么?我似乎找不到任何关于如何在 Rails 后端进行设置的资源。任何帮助,将不胜感激。谢谢!
【问题讨论】:
标签: ruby-on-rails ember.js ember-cli active-model-serializers