我在一夫一妻制的关系中有两件事。为了匿名,我们将其称为User
和Profile
user.js的
export default DS.Model.extend({
profile: DS.belongsTo('profile', { async: false }),
name: DS.attr('string')
});
profile.js
export default DS.Model.extend({
user: DS.belongsTo('user', { async: true }),
active: DS.attr('boolean')
});
用户使用他们的个人资料附在臀部,因此个人资料总是侧载。
{
"user": {
"id": 23,
"name": "Homer Simpson",
"profile": 42
},
"profiles": [
{
"id": 42,
"active": true,
"profile": 23
}
]
}
现在,说用户遇到当地犯罪现场的麻烦并决定更改他的名字。为了在雷达下飞行,他还希望他的个人资料被停用。
let user = this.get('user'),
profile = user.get('profile');
profile.get('user.id'); // 23
user.set('name', 'Mr. Thompson');
user.save().then(() => {
profile.set('active', false);
return profile.save();
});
user.save
的有效负载很好......
{
"user": {
"id": 23,
"name": "Mr. Thompson",
"profile": 42
}
}
但对于profile.save
..?
{
"profile": {
"id": 42,
"active": false,
"user": null
}
}
为什么,为什么,用户被设置为null
?
没有自定义序列化器正在发挥作用,也没有对.save
答案 0 :(得分:0)
在执行schedule.save()??
时,schedule对象具有用户模型您的模型还是日程安排还是个人资料?
答案 1 :(得分:0)
好。我错了。 是一个自定义序列化器正在发挥作用,但它不适用于用户的Profile。
<强>串行器/ user.js的强>
extractAttributes: function(modelClass, resourceHash) {
var rval = this._super(modelClass, resourceHash);
// add profile as profileId
rval.profileId = resourceHash.profile;
return rval;
}
这是在我们重新构建关系之前,其他人如何构建关系的一部分。
现在,删除此用户自定义会导致个人资料正确序列化,并在保存时保持userId
完好无损。