埋め込みは常に1レベルで使用できますが、2レベルのディープモデルでは使用できません。緊急の助けが必要
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として取得しますが、2番目の部分を機能させることができません。Emberデータストアのリビジョン11を使用しています。同様の問題/解決策を持っている人。
興味深いことに、hasManyを試したので、投稿-hasMany->コメント、コメント-hasOne->発酵。これは正常に機能します。コードは次のとおりです。
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")