2015-08-26 1 views
0

Я использую Ember Data 1.13.7 и Ember 1.13.6 с помощью ActiveModelSerializer и EmbeddedRecordsMixin.Ember Data EmbeddedRecordsMixin не сохранит только что созданные записи

У меня есть 2 модели:

// models/post.js 
export default DS.Model.extend({ 
    //bunch of attrs 
    commentStuff: DS.belongsTo('commentStuff', {async:true}) 
} 

и

//models/comment-stuff.js 
export default DS.Model.extend({ 
    //bunch of attrs 
    post: DS.belongsTo('post', {async: true)) 
} 

в моем сериализатором у меня есть

export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, { 
    isNewSerializerAPI: true, 

    attrs: { 
    commentStuff: {serialize: 'records', deserialize: 'ids'} 
    }, 

    keyForAttribute(attr){ 
    if(attr === 'commentStuff'){ 
     return 'comment_stuff_attributes'; 
    } else { 
     return this._super(attr); 
    } 
    } 

}); 

Это отлично работает, когда я редактировать существующие записи, а затем post.save(), но когда я создать новые записи с:

var post = this.store.createRecord('post'); 
post.commentStuff = this.store.createRecord('commentStuff'); 

И затем заполните все их соответствующие атрибуты. Json, отправленный на сервер по адресу post.save(), не показывает ни одного из атрибутов commentStuff и просто возвращает null.

{post: { 
    attribute1: 'whatever', 
    attribute2: 'smth', 
    attribute3: 4, 
    comment_stuff_attributes: null} 
} 

Есть ли другой способ сохранить или создать новые записи?

ответ

1

Вы должны использовать методы .set и .get. Не указано post.commentStuff =, но post.set('commentStuff',.

+0

<3 Большое вам спасибо! Потому что Ember Inspector * казалось * знал связанные записи, я предположил, что часть, вероятно, не проблема. Я так рад! – Confused