#ember.js #ember-data #rails-activerecord
#ember.js #ember-данные #rails-activerecord
Вопрос:
Я использую DS.ActiveModelAdapter.
Сохраняя новую запись данных Ember в моем бэкэнде, я хотел бы отправить :
{
author: {
name: 'Mike',
book_ids: [null, null]
},
books: [
{
name: 'book1'
},
{
name: 'book2'
}
]
}
Я думал, что serialize: ‘ids’ предназначен именно для этого, но когда я использую эту конфигурацию:
App.AuthorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
books: {serialize: 'ids'}
}
});
Я просто получаю :
{
author: {
name: 'Mike',
book_ids: [null, null]
}
}
Обновить :
В документе говорится: «Существует возможность не встраивать JSON в сериализованную полезную нагрузку с помощью serialize: ‘ids’ . Если вы вообще не хотите, чтобы связь отправлялась, вы можете использовать serialize: ‘no’.»
Таким образом, неясно, добавляются ли только идентификаторы или идентификаторы и записи в сторону. Я хотел бы получить подтверждение здесь, что записи не предназначены для добавления в сторону с помощью serialize: ‘ids’ , и в этом случае, что я могу сделать для «sidepush» вложенных записей.
Ответ №1:
Похоже, что EmbeddedRecordsMixin был неподходящим вариантом..
Фрагменты модели данных Ember были идеальным решением для меня. https://github.com/lytics/ember-data.model-fragments
Следуя примеру, который я привел в своем вопросе, используя последнее, соответствующие модели будут :
App.Author = DS.Model.extend({
name: DS.attr('string'),
books: DS.hasManyFragments('book')
});
App.Book = DS.ModelFragment.extend({
name: DS.attr('string')
});