1
是否可以在geddy模型中定义临时场/虚拟场?有没有办法在Geddy模型中定义虚拟域?
就像我在表单中使用输入字段tmpFirstName
和tmpLastName
但提交时我想将信息存储在单个列name
。
感谢
是否可以在geddy模型中定义临时场/虚拟场?有没有办法在Geddy模型中定义虚拟域?
就像我在表单中使用输入字段tmpFirstName
和tmpLastName
但提交时我想将信息存储在单个列name
。
感谢
这可以用新的生命周期方法来实现平凡(感谢!)。
在你的控制器:
this.create = function (req, resp, params) {
var self = this
, person = geddy.model.Person.create(params);
person.firstname = params.firstname;
person.lastname = params.lastname;
if (!person.isValid()) {
this.respondWith(person);
}
else {
person.save(function(err, data) {
if (err) {
throw err;
}
self.respondWith(person, {status: err});
});
}
};
在你的模型:
this.defineProperties({
name: {type: 'string'}
});
this.beforeSave = function() {
this.name = this.firstname + ' ' + this.lastname;
}
请注意,你不申报 “虚拟” 的属性,否则将geddy它们存储在数据库中。
感谢Ben,所以现在我们不能在模型中声明它,就像rails使用'attr_accessor'所做的一样,所以我们只需调用'.create(params)'而不是在调用'.create ()'? – ginad
我早些时候试过这个代码,不知道为什么(虚拟)属性没有用'.create'设置。 你说得对,这很奇怪。我查看了我们的geddy-passport代码,并且'confirmPassword'似乎在那里作为一个虚拟属性正常工作。 我将提交一个问题并研究发生了什么。 – Ben
是的,这就是我想知道,因为geddy有一个validatesConfirmed,所以我想知道如果'.create'不读取虚拟属性如何使用这个。再次感谢本 – ginad