我有一个应用程序,让我创造出可以被发送到N个社交网络的消息,建模如下:更新对象多对多的关系
Social.Account = DS.Model.extend({
username: DS.attr("string"),
messages: DS.hasMany("Social.Message")
});
Social.Message = DS.Model.extend({
text: DS.attr("string"),
account: DS.belongsTo("Social.Account")
});
我的代码创建记录是这样的:
saveMessage: function(){
var account = Social.Account.find(this.get("id")),
msg = Social.store.createRecord(
Social.Message,
{
text: postingWindow.get('text'),
account: account,
}
);
account.get("messages").addObject(msg);
Social.store.commit();
}
与窗体数据看起来像这样:
text:testing one three five seven
message_key:
tags:
user_id:
created:Wed, 19 Jun 2013 21:39:14 GMT
scheduled_at:2013-06-20T03:00:00.000Z
is_editing:false
status:C
account:56
使得p艺术作品优秀。现在我们正在调度未来的消息,这为用户提供了在他们保存后但在他们发送之前对其进行编辑的机会。在表面上我的实现似乎正常工作,但我注意到Ember并没有发送帐户信息和帖子,这意味着当我的服务器代码运行时,消息在数据库中被孤立。这里的更新代码:
sendNow: function(message){
var account = Social.Account.find(this.get('controllers.account.id'));
message.setProperties({
scheduled_at: '',
accounts: [account]
// I've also tried accounts: this.get('controllers.account.id')
});
Social.store.commit();
}
以及相应的表单数据:
text:testing one three five seven
message_key:
tags:
user_id:17
created:Wed, 19 Jun 2013 21:39:14 GMT
scheduled_at:
is_editing:false
不管我做什么,灰烬是不是账户数据发送到服务器。是否有更适当的方式更新记录并使其正确保存?
所以看起来这个问题是我们的服务器代码开始。我们正在发送'accounts',但Ember模型是'account'。到目前为止,这不是一个问题,因为消息总是通过帐户调用中的sideload拉入。所以我们现在很好。感谢所有看过这个的人。 – commadelimited