2015-05-21 58 views
0

我有問題定義我的模型之間的關係,以獲得級聯屬性。 我想MapLineString在Trail被刪除或Draw被刪除時被刪除。但是我不希望當MapDraw或MapLineString被刪除時Trail被刪除。模型之間餘燼數據:父母/子女之間的關係

關係是:

Trail能有一輛拖車,一個團隊,一個mapDraw

MapDraw可以有很多MapLineString

MapLineString可以屬於跟蹤和/或MapDraw

Trail = DS.Model.extend({ 
    Trailer: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}), 
    Team: DS.belongsTo('mapLinestring', {async: true, inverse: 'trail'}), 
    mapDraw: DS.belongsTo('mapDraw', {async: true}), 
}); 

MapDraw = DS.Model.extend({ 
    lineStrings: DS.hasMany('mapLinestring', {async: true}), 
    trail: DS.belongsTo('mtgTrail') 
}); 

MapLineString = DS.Model.extend({ 
    trail: DS.belongsTo('mtgTrail'), 
    mapDraw: DS.belongsTo('mapDraw'), 
}); 

聲明失敗:您在 mantrailling @ model:map-linestring:上定義了'trail'關係,但是您定義了類型mantrailling @model:mtg-trail的相反關係 :多次。 看 http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses 如何明確指定逆

+0

您使用a,b和c來定義attrs和模型不會輕易理解問題。 – Craicerjack

回答

0

看什麼您在這聽起來像
在文章的開頭寫的應該是:

export default DS.Model.extend({ 
    bees: DS.hasMany('B', {async: true, inverse: 'abees'}), 
    cees: DS.hasMany('C', {async: true}), //doesnt need an inverse as you are getting all the ones that belong to A 
});  

乙方應:

export default DS.Model.extend({ 
    cees: DS.hasMany('C', {async: true, inverse: 'bcees'}), 
    abees: DS.belongsTo('A') 
});  

然後在C中你有兩個模型屬性叫同樣的東西

export default DS.Model.extend({ 
    acees: DS.belongsTo('A'), 
    bcess: DS.belongsTo('B') 
});  

您的命名約定也使它很混亂。爲什麼不只是將模型的名稱命名爲與他們所代表的內容相關的東西呢?

+0

好的,對不起,我確實想讓我更容易編輯我的帖子 –

0

好吧,我發現問題是什麼。 我一直在使用本地存儲適配器,它不適用於{async:true}。 這些記錄並未在父級方面持續存在。