在我的应用程序中,我有一个模型Comment
,其模型author
的关系为User
。
用Java术语来说,这个模型User
是一个抽象类:模型实例的类型为Student
或Teacher
。为此,模型User
具有属性type
。所以结构如下:
App.Comment = DS.Model.extend({
author: DS.belongsTo('user'),
...
});
和
App.User = DS.Model.extend({
type: DS.attr('string'),
...
});
App.Student = App.User.extend({
...
});
App.Teacher = App.User.extend({
...
});
通过REST API,我收到了Comment
的列表,包括各自的author
。
默认情况下,对于每个作者,Ember将创建User
模型的实例。
但是,我希望创建Student
或Teacher
,具体取决于请求响应中的type
属性。
实现这一目标的最佳方法是什么?某处我应该能够覆盖将JSON键映射到Ember模型的函数。
答案 0 :(得分:1)
好的,我找到了。事实证明,Ember支持多态模型,所以我通过将{polymorphic: true}
添加到author
关系来轻松解决它。
App.Comment = DS.Model.extend({
author: DS.belongsTo('user', { polymorphic: true }),
...
});
答案 1 :(得分:0)
我会尝试覆盖App.Comment的序列化程序。您可以找到一些示例文档here。