0

Ember Data 0.13 から Ember Data 1.0 (ベータ 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')
});

App.Userただし、ED 1.0 では、アソシエーションを宣言するために を使用する必要はありません。モデルの名前を渡す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 に答える