我有一個應用程序,讓我創造出可以被髮送到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