0

我正在从 Ember Data 0.13 过渡到 Ember Data 1.0(beta 1)。似乎为模型构建的 URL 在不应该大写的情况下大写。在 ED 0.13 中,大写和复数自动发生并且没有问题。我想在 ED 1.0 中也是如此,但我必须忽略一些东西。

App.Account = DS.Model.extend({
  // Attributes
  company: DS.attr('string'),

  // Relationships
  users: DS.hasMany('User')
});

App.AccountAdapter = DS.RESTAdapter.extend({
  namespace: 'api',
});

在控制器中,我创建了一个新记录,填充它并保存它。

var account = this.store.createRecord('account');
account.set('company', this.get('company'));
account.save();

Ember Data 用于保存记录的请求 URL 是http://localhost:3000/api/Accounts. 为什么型号名称的复数要大写?如何配置模型/适配器以使用accounts而不是Accounts

4

1 回答 1

0

似乎模型关联命名约定的变化是导致此问题的原因。在 ED 1.0 之前,声明了一个关联,如下所示。

App.Account = DS.Model.extend({
  // Attributes
  company: DS.attr('string'),

  // Relationships
  users: DS.hasMany('App.User')
});

然而,在 ED 1.0 中,不需要使用App.User来声明关联。传递模型的名称user就足够了。因为我在Account模型中将User模型名称大写,所以 ED 在 URL 中将模型名称(复数)大写。

App.User = DS.Model.extend({
  // Attributes
  first_name: DS.attr('string'),
  last_name: DS.attr('string'),
  email: DS.attr('string'),
  password: DS.attr('string'),
  password_confirmation: DS.attr('string'),

  // Relationships
  account: DS.belongsTo('account') // model name should be lowercase
});

就像您需要传递模型的小写名称来创建新记录 ( this.store.createRecord('user');) 一样,您还需要使用小写的模型名称来指定关联的模型。

于 2013-09-02T14:23:00.010 回答