2013-02-15 1 views
1

Я могу использовать встроенные всегда для одного уровня, но я не могу использовать его для двухуровневой модели. Нужна срочная помощьEmber data multi level hierarchy with embedded always

App.Post = DS.Model.extend(
    title: DS.attr("string") 
    comment: DS.belongsTo("App.Comment") 
) 

App.Comment = DS.Model.extend(
    text: DS.attr("string") 
    ferment: DS.belongsTo("App.Ferment") 
) 

App.Ferment = DS.Model.extend(
    fermenter: DS.attr("string") 
) 

App.Adapter.map App.Post, 
    'comment': 
    embedded: "always" 


App.Adapter.map App.Comment,  
    ferment : 
    embedded: "always" 

# ----------------------------- 
App.store = App.Store.create(
    adapter: App.Adapter.create() 
) 
# ----------------------------- 

App.store.adapter.load App.store, App.Post, 
    id: 12 
    comment: {text: "blabla", ferment:{fermenter:'abcd'}} 

console.log App.Post.find(12).get("comment.text") 
console.log App.Post.find(12).get("comment.ferment.fermenter") 

Я получаю журнал для comment.text как BlaBla Но не может получить вторую часть работы. Я использую ревизию 11 хранилища данных Ember. Любой с аналогичной проблемой/решением.

Интересно, что мы попробовали hasMany, так что Post -hasMany-> Комментарии, комментарий -hasOne-> Ferment. Это прекрасно работает, вот код.

App.Post = DS.Model.extend(
    title: DS.attr("string") 
    comments: DS.hasMany("App.Comment") 
) 

App.Comment = DS.Model.extend(
    text: DS.attr("string") 
    ferment: DS.belongsTo("App.Ferment") 
) 

App.Ferment = DS.Model.extend(
    fermi: DS.attr("string") 
) 

App.Adapter.map App.Post, 
    comments: 
    embedded: "always" 

App.Adapter.map App.Comment, 
    ferment: 
    embedded: "always" 

App.store = App.Store.create(
    adapter: App.Adapter.create() 
) 

# App.store.adapter.serializer.configure(App.Comment, 
# sideloadAs: 'comments' 
#) 
App.store.adapter.load App.store, App.Post, 
    id: 12 
    comments: [{text: "blabla", ferment:{fermi: "found fermi"}}] 

console.log App.Post.find(12).get("comments.firstObject.text") 
console.log App.Post.find(12).get("comments.firstObject.ferment.fermi") 
+0

Я думаю, мне нужно написать sideload отображения, может кто-нибудь помочь мне написать это. – sudhanshu

+0

Кто-то ответ будет замечательным. !!! Невозможно передать аргументы в качестве параметров для JSONtransforms, почти застряв только в том, чтобы написать картограф. – sudhanshu

+0

Теперь это прекрасно. – sudhanshu

ответ

0

Существует еще некоторые исправления ошибок остаются в Ember рельсах: Мы страдали из-за функции

extractEmbeddedBelongsTo: function(loader, relationship, data, parent, prematerialized)  { 
var reference = this.extractRecordRepresentation(loader, relationship.type, data, true); 
prematerialized[relationship.key] = reference; 

// If the embedded record should also be saved back when serializing the parent, 
// make sure we set its parent since it will not have an ID. 
var embeddedType = this.embeddedType(parent.type, relationship.key); 
if (embeddedType === 'always') { 
    reference.parent = parent; 
} 

}

BelongsTo отношение прыгая извлечение вложенных объектов. Неправильный здесь:

extractEmbeddedBelongsTo: function(loader, relationship, data, parent, prematerialized) { 
var reference = loader.sideload(relationship.type, data); 
prematerialized[relationship.key] = reference; 

// If the embedded record should also be saved back when serializing the parent, 
// make sure we set its parent since it will not have an ID. 
var embeddedType = this.embeddedType(parent.type, relationship.key); 
if (embeddedType === 'always') { 
    reference.parent = parent; 
} 

}

+0

Ошибка: https://github.com/emberjs/ember-rails/issues/137 – sudhanshu