【发布时间】:2013-10-31 15:16:08
【问题描述】:
是否可以在geddy模型中定义临时字段/虚拟字段?
就像在表单中一样,我使用了输入字段 tmpFirstName 和 tmpLastName,但提交时我想将信息存储在单个列中 name。
谢谢
【问题讨论】:
是否可以在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 会将它们存储在数据库中。
【讨论】:
attr_accessor 所做的那样在模型中声明它,所以我们只调用 .create(params) 而不是在调用 @987654325 之后一一定义@?
.create 设置(虚拟)属性。你说得对,这很奇怪。我查看了我们的 geddy-passport 代码,confirmPassword 似乎作为虚拟属性在那里工作正常。我将提出问题并调查发生了什么。
.create 不读取虚拟属性,如何使用它。再次感谢本