Долго бьюсь над проблемой, потому подозреваю, что решение элементарно. Свёл к абстрактной упрощённой модели. Предположим есть пациент и жалобы
// Модель пациента
Yo.Patient = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
zhalobs: DS.hasMany('zhaloba')
});
// Модель жалобы
Yo.Zhaloba = DS.Model.extend({
title: DS.attr('string'),
patients: DS.hasMany('patient')
});
В пациенте должны быть записаны все жалобы, в жалобе все пациенты.
Пробую перед сохранением пациента вставить ему
pushObjects с массивом объектов-жалоб, затем сохраняю пациента. После этого бегу по массиву жалоб и каждой делаю
pushObject с новым пациентом.
newPatient.get('zhalobs').pushObjects(zs);
newPatient.save().then(function (p) {
for (var i = 0; i < zhalobs.length; i++) {
zhalobs[i].get('patients').pushObject(p);
zhalobs[i].save();
};
});
Но в итоге получаю совсем не то, что нужно.
1. У пациента жалобы не сохраняются. Причём в POST request поле
zhalobs является пустым массивом. Значит проблема не в сервере.
2. У жалоб добавляется пациент, но нулевым элементом массива всегда устанавливается
null.
Я с Ember общаюсь совсем недавно, может не правильно понял его логику действий. Буду благодарен совету.