创建模型的子类

时间:2013-10-22 15:18:15

标签: ember.js ember-data

在我的应用程序中,我有一个模型Comment,其模型author的关系为User

用Java术语来说,这个模型User是一个抽象类:模型实例的类型为StudentTeacher。为此,模型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模型的实例。

但是,我希望创建StudentTeacher,具体取决于请求响应中的type属性。

实现这一目标的最佳方法是什么?某处我应该能够覆盖将JSON键映射到Ember模型的函数。

2 个答案:

答案 0 :(得分:1)

好的,我找到了。事实证明,Ember支持多态模型,所以我通过将{polymorphic: true}添加到author关系来轻松解决它。

App.Comment = DS.Model.extend({
    author: DS.belongsTo('user', { polymorphic: true }),
    ...
});

答案 1 :(得分:0)

我会尝试覆盖App.Comment的序列化程序。您可以找到一些示例文档here