2015-09-21 5 views
0

Я использую RESTAdapter Ember и имеют довольно стандартные полиморфного отношения:Ember не загружая внедренный полиморфного отношения

// models/order.js 
import DS from 'ember-date'; 
export default DS.Model.extend({ 
    transferableItem: DS.belongsTo('transferable-item', { polymorphic: true }) 
}); 

// models/transferable-item.js 
import DS from 'ember-date'; 
export default DS.Model.extend({ 
    order: DS.belongsTo('order') 
}); 

// models/ticket.js 
import TransferableItem from './transferable-item'; 
export default TransferableItem.extend(); 

Моя JSON выглядит следующим образом:

{ 
    "orders": [{ 
    "id": 111, 
    "transferableItem": 999 
    "transferableItemType": "Ticket" 
    }], 
    "tickets": [{ 
    "id": 999 
    }] 
} 

Глядя в Ember инспектор, оба Orders и билеты правильно загружаются. Однако связь между двумя из них нарушена. Я получаю эту ошибку:

You looked up the 'transferableItem' relationship on a 'order' with id 999 but some of the associated records were not loaded. Either make sure they are all loaded together with the parent record, or specify that the relationship is async (DS.belongsTo({ async: true }))

Согласно Ember инспектора, нет transferable-item заряжено, так что в некотором смысле, эта ошибка имеет смысл. Однако, поскольку это полиморфное отношение, не нужно ли просто пытаться использовать связанный Билет, который фактически загружен?

ответ

1

Сохранено на копании, и обнаружил, что синтаксис необходимо изменить, когда запись встроена. JSON должен выглядеть следующим образом:

{ 
    "orders": [{ 
    "id": 111, 
    "transferableItem": { 
     "id": 999 
     "type": "ticket" 
    } 
    }], 
    "tickets": [{ 
    "id": 999 
    }] 
} 
Смежные вопросы