我正在尝试为用户/项目创建新的项目权限,但保存失败,因为"没有提供有效的项目"。查看网络日志,服务器调用中的RequestPayload为空({" ProjectPermission":{}})。有什么想法吗?
_addViewPermission: function() {
this.getModel().then({
success: this.createPP,
scope: this
}).then({
success: this.readPP,
scope: this
}).then({
success: function(result) {
console.log('success', result);
},
failure: function(error) {
console.log('oh noes!', error);
}
});
},
getModel: function() {
return Rally.data.ModelFactory.getModel({
type: 'ProjectPermission'
});
},
createPP: function(model) {
var permission = Ext.create(model, {
Project: "/project/51063976712",
Role: 'Viewer',
User: "/user/43049588391"
});
return permission.save();
},
readPP: function(permission){
console.log(permisson);
return permission.self.load(permission.getId(), {
fetch: ['Project', 'User', 'Role']
});
}
答案 0 :(得分:1)
这是AppSDK中一个长期存在的奇怪缺陷 - 对不起它让你失望!我试图找到另一个stackoverflow帖子,但也许这里还没有被问到。
无论如何,它失败的原因是Project字段被标记为只读,即使在创建时需要它。因此,即使您明确指定了代理,代理也永远不会发送到项目字段。
解决方法是在创建和保存新记录之前将项目字段标记为可持久。
model.getField('Project').persist = true;