在Ember.js中使用多态关系

时间:2014-02-26 15:07:47

标签: javascript ember.js

这个对我来说有点棘手,因为它根本没有包含在文档中。

我有四种模式:

App.Dog = DS.Model.extend();
App.Cat = DS.Model.extend();

App.Food = DS.Model.extend();
App.Toy = DS.Model.extend();

dogcat都有很多food和许多toys。另一方面,foodtoy的单个实例只能属于一个dogcat(因此它是hasMany - ish与动物的关系方和belongsTo - 项目方面的ish。

任何提示如何使用多态关系在Ember中执行此操作?或者除了多态关系之外,还有更好的方法来实现这个目标吗?

我应该在控制器中实现哪些代码来创建属于foodtoy的新dogcat记录?

谢谢!

1 个答案:

答案 0 :(得分:1)

基于this slideshow,类似于:

App.Animal = DS.Model.extend({
  food: DS.hasMany('App.Food', { polymorphic: true }),
  toys: DS.hasMany('App.Toy', { polymorphic: true })
});
App.Dog = App.Animal.extend(/* .... */);
App.Cat = App.Animal.extend(/* .... */);

App.Food = DS.Model.extend({
  owner: DS.belongsTo('App.Animal', { polymorphic: true })
});
App.Toy = DS.Model.extend({
  owner: DS.belongsTo('App.Animal', { polymorphic: true })
});