如何在Ember中实施HABTM?

时间:2014-11-17 17:20:55

标签: ruby-on-rails ruby-on-rails-4 ember.js ember-data

http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

所述,我有相同的HABTM(有很多,属于很多)

在余烬数据中,如何定义医生,预约和患者之间的关系?

在Rails中,很容易通过很多通过。或者,是否需要在Ember中进行HABTM关联,因为它正在从/向API提取/发送数据?

不幸的是,http://emberjs.com/guides/models/defining-models/#toc_many-to-many仅显示与TWO模型的多对多关联。

1 个答案:

答案 0 :(得分:1)

嗯,至少你需要在预约模式上添加几个属于自己的关系:

App.Appointment = DS.Model.extend({
  ...
  physician: DS.belongsTo('physician'),
  patient: DS.belongsTo('patient'),
  ...
});

因此,只要保存约会,其子关系就会随之保存。我认为这就是你想要的,因为这就是你在发布到Rails指南的链接中如何构建数据库。

其余部分在很大程度上取决于您的应用程序的结构,尤其是您的服务器的JSON API。例如,如果你有一个模型physician,你可能会做这样的事情:

var query = { physician: physician.get('id') };
this.get('store').findQuery('appointment', query).then(function (results) {
  ...
});

如果您想找到所有医生的患者,您可以简单地返回一系列属于所发现的预约的独特患者。这种方法非常简单易懂,但它并没有充分利用Ember Data。

或者,您可以尝试在您的医生和患者模型上定义多人关系:appointments: DS.hasMany('appointment'),这有一些优势,但也需要更好的Ember数据知识。