Ответ 1
Насколько я помню, это никогда не поддерживалось в (старой) версии Ember Data, которую я использовал тогда. Новые версии обрабатывают этот случай по-другому, так что я бы сказал, что это устарело и закрыло его.
У меня есть следующие модели:
App.Company = DS.Model.extend({
name: DS.attr('string'),
accounts: DS.hasMany('App.Account', {
inverse: 'company'
})
});
App.Account = DS.Model.extend({
login: DS.attr('string'),
first_name: DS.attr('string'),
last_name: DS.attr('string'),
email: DS.attr('string'),
password: DS.attr('string'),
password_confirmation: DS.attr('string'),
company: DS.belongsTo('App.Company')
});
Компания определяется как встроенная в учетную запись:
DS.RESTAdapter.map('App.Account', {
company: { embedded: 'always' }
});
Когда я создаю новую учетную запись, данные компании правильно внедряются в данные учетной записи, и я вижу запрос POST, который я ожидаю на стороне сервера:
Started POST "/accounts" for 127.0.0.1 at 2013-06-27 13:30:53 +0200
Processing by AdminUsersController#create as JSON
Parameters: {"account"=>{"login"=>"fsdfdf", "first_name"=>"fgdfgh", "last_name"=>"[email protected]", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "company"=>{"name"=>"gfdhgtrhzrh"}}}
Однако я также вижу дополнительный запрос POST для самой компании:
Started POST "/companies" for 127.0.0.1 at 2013-06-27 13:30:53 +0200
Processing by CompaniesController#create as JSON
Parameters: {"company"=>{"name"=>"gfdhgtrhzrh"}}
Я настраиваю модели следующим образом:
this.transaction = this.get('store').transaction();
var account = this.transaction.createRecord(App.Account, {});
account.set('company', this.transaction.createRecord(App.Company, {}));
Когда пользователь нажимает кнопку "Сохранить", я просто фиксирую транзакцию:
this.transaction.commit();
Является ли это ошибкой или я делаю что-то неправильно? Прошло довольно много времени на этом уже...
Спасибо за помощь!
Насколько я помню, это никогда не поддерживалось в (старой) версии Ember Data, которую я использовал тогда. Новые версии обрабатывают этот случай по-другому, так что я бы сказал, что это устарело и закрыло его.
this.transaction.createRecord(App.Company, {})
Фрагмент кода создает отдельный объект компании. Неужели это такой сюрприз, что для него существует пост-действие?