mam następujące modele:utrzymujących rodzica i osadzony rekord w Ember-danych
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')
});
Firma jest zdefiniowane jako osadzony na koncie:
DS.RESTAdapter.map('App.Account', {
company: { embedded: 'always' }
});
Kiedy utworzyć nowe konto, dane firmy są poprawnie osadzone w danych konta i widzę żądanie POST, którego oczekuję po stronie serwera:
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]dfgfgdfg.de", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "company"=>{"name"=>"gfdhgtrhzrh"}}}
Jednak jestem też widząc dodatkowe żądania POST dla samej spółki:
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"}}
mam konfigurowania modeli następująco:
this.transaction = this.get('store').transaction();
var account = this.transaction.createRecord(App.Account, {});
account.set('company', this.transaction.createRecord(App.Company, {}));
Gdy użytkownik kliknie zaoszczędzić, po prostu popełnić transakcja:
this.transaction.commit();
Czy to błąd, czy robię coś nie tak? Spędziłem z tym sporo czasu ...
Dzięki za pomoc!
Naprawiłem to zmieniając osadzoną konfigurację na DS.RESTAdapter.map ("App.Account", {company: {embedded: 'load'}}); Nie wiem, dlaczego to działa właściwie ... – marcoow
Myślę, że to jest z belongsTo, tak jak ma wiele zachowań zgodnie z oczekiwaniami. Z wieloma (nawet bez dzieci) faktycznie używasz relacji do utworzenia rekordu potomnego, ale z belongsTo relacja jest zerowa, więc nie możesz jej utworzyć za pomocą this.get ('company'). CreateRecord –
Stworzyłem pull Żądanie, które moim zdaniem to naprawia - nie rozumiem, dlaczego nie powinno działać Jodła należy tak samo dobrze, jak w przypadku hasMany: https://github.com/emberjs/data/pull/1067 – marcoow