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