保存一个有很多服务的模型,我的ID在哪里

时间:2014-01-22 22:01:47

标签: ember.js coffeescript ember-data

我有以下型号

MyApp.Company = MyApp.User.extend
  companyName: DS.attr('string')
  companyEmail: DS.attr('string')
  cvr: DS.attr('number')
  services: DS.hasMany('service')

哪个服务很多

MyApp.Service = DS.Model.extend
  name: DS.attr('string')
  description: DS.attr('string')
  content: DS.attr('string')
  avatar: DS.attr('string')
  smallAvatar: DS.attr('string')
  serviceField: DS.belongsTo('serviceField')
  companies: DS.hasMany('company')

现在我有一个面板,用户将服务添加到他的公司,最后按下保存按钮,在我的控制器中触发此操作。

saveAccount: ->
  @get('model').save()

现在我的问题是,随着新服务的添加,我希望put请求中的数据看起来像这样。

company: {
company_email: "fsfsdfsdf"
company_name: "Elvar's biks"
cvr: 389298498
services: [1,4,2]
}

但缺少“服务”;我期待一个错误的json结构?如果是这样,我应该如何解决这个问题呢?

可能值得注意的是,所有对象都是事先创建的,所以客户端我从现有服务中选择,我只需要创建关系服务器端。

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试建立多对多关系,因此您需要在此处使用桥接表/模型。

首先,创建一个名为CompanyService的新模型:

MyApp.CompanyService = DS.Model.extend
  company: DS.belongsTo 'company'
  service: DS.belongsTo 'service'

接下来,更新您的公司模型:

MyApp.Company = MyApp.User.extend
  companyName: DS.attr('string')
  companyEmail: DS.attr('string')
  cvr: DS.attr('number')
  companyServices: DS.hasMany('companyService', {async:true})

然后,更新您的服务模式:

MyApp.Service = DS.Model.extend
  name: DS.attr('string')
  description: DS.attr('string')
  content: DS.attr('string')
  avatar: DS.attr('string')
  smallAvatar: DS.attr('string')
  serviceField: DS.belongsTo('serviceField')
  companyServices: DS.hasMany('companyService', {async:true})

从这里你需要修改你要适应这种新模型关系的任何后端设置(Rails?)。

希望有所帮助!