1

这对我来说似乎一遍又一遍地出现,我想要关于如何处理它的建议。请原谅我在咖啡脚本中编写示例。

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()

我搞砸了交易,但没有成功。我会继续搞砸它,但这似乎是一个很好的问题,可以在 S/O 上回答以供将来参考。

4

1 回答 1

0

你需要在交易中这样做吗?如果没有,您可以App.store.commit()在将帖子记录添加给作者之前致电。如果这不能解决您的问题,您可能会遇到异步问题。在这种情况下,您可以连接到您的 Author-model 上的didCreate事件。当该事件触发时,记录已在服务器上创建,您的模型应该有一个 id。如果您在此阶段添加帖子,您的服务器不应该抱怨。

于 2012-10-24T06:00:41.970 回答