2013-06-27 6 views
17

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!

+0

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

+0

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 –

+0

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

Odpowiedz

0

O ile pamiętam, to nigdy nie było obsługiwane w (starej) wersji Ember Data, którą wówczas używałem. Nowsze wersje obsługują ten przypadek inaczej, więc powiedziałbym, że jest on nieaktualny i zamyka go.

0

this.transaction.createRecord(App.Company, {})

fragment kodu tworzy oddzielną jednostkę firmy. Czy to naprawdę taka niespodzianka, że ​​jest dla niego post-action?

Powiązane problemy