2013-06-27 6 views
17

मैं निम्नलिखित मॉडल:एंबर-डेटा में माता पिता और एम्बेडेड रिकॉर्ड बने

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"}}} 

हालांकि, मैं भी कंपनी खुद के लिए एक अतिरिक्त पोस्ट अनुरोध दिखाई दे रही है:

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(); 

क्या यह एक बग है या मैं कुछ गलत कर रहा हूं? उस पर काफी समय बिताया है ...

मदद के लिए धन्यवाद!

+0

मैंने एम्बेडेड कॉन्फ़िगरेशन को DS.RESTAdapter.map ('App.Account', {company: {embedded: 'load'}} में बदलकर तय किया है; यकीन नहीं है कि यह वास्तव में क्यों काम करता है ... – marcoow

+0

मुझे लगता है कि यह एक संबंधित है जैसा कि कई के रूप में व्यवहार किया जाता है। कई लोगों के साथ (यहां तक ​​कि बच्चों के साथ भी) आप वास्तव में एक बच्चे के रिकॉर्ड बनाने के लिए रिश्ते का उपयोग करते हैं, लेकिन संबंधित के साथ रिश्ते शून्य है ताकि आप इसे इस से नहीं बना सकें .get ('company')। CreateRecord –

+0

मैंने एक पुल बनाया अनुरोध जो मुझे लगता है कि इसे ठीक करता है - मुझे नहीं लगता कि इसे फ़िर का काम क्यों नहीं करना चाहिए इसके साथ-साथ यह भी है: https://github.com/emberjs/data/pull/1067 – marcoow

उत्तर

0

जहां तक ​​मुझे याद है कि एम्बर डेटा I के पुराने (पुराने) संस्करण में वास्तव में कभी समर्थित नहीं था। नए संस्करण उस मामले को अलग-अलग संभालते हैं, इसलिए मैं कहूंगा कि यह पुराना है और इसे बंद करें।

0

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

कोड टुकड़ा अलग कंपनी इकाई पैदा करता है। क्या वाकई यह आश्चर्य की बात है कि इसके लिए एक पोस्ट एक्शन है?

संबंधित मुद्दे