这对我来说似乎一遍又一遍,我想就如何处理它提出建议。请原谅我在coffeescript中写下的例子。
App.Post = DS.Model.extend
title: DS.attr('string')
author: DS.belongsTo('App.Author')
App.Author = DS.Model.extend
name: DS.attr('string')
posts: DS.hasMany('App.Post')
我想同时创建作者和相关帖子。
author = App.Author.createRecord({name: 'waldo'});
author.get('posts').createRecord({title: 'how to do the Ember'})
替代地
post = App.Post.createRecord({author: author})
问题是,我服务器上的Post模型验证了author_id的存在。因此,当我致电store.commit()
时,author
已成功提交,但post
被拒绝,因为post.get('author.id') //=> undefined
更新:作者模型还在服务器上进行了验证,表明至少需要创建一个帖子,因此在创建帖子之前我无法调用store.commit()
。< / p>
我搞错了交易。我将继续讨论它,但这似乎是一个很好的问题,以回答S / O以供将来参考。
答案 0 :(得分:0)
您是否需要在交易中执行此操作?如果没有,您可以在将后记录添加到作者之前调用App.store.commit()
。如果这不能解决您的问题,您可能会遇到异步问题。在这种情况下,您可以在作者模型上连接didCreate - 事件。当该事件触发时,已在服务器上创建记录,并且您的模型应具有ID。如果您在此阶段添加帖子,您的服务器不应该抱怨。