不要怂,就是干,撸起袖子干!

Commit 0e11c0ce by Vangelis Tsoumenis

Changed Model.prototype.save to optionally accept an array of fieldnames to upda…

…te. In that case other fields will not be updated.
1 parent cc03a046
......@@ -36,8 +36,8 @@ BelongsTo.prototype.injectSetter = function(obj) {
obj[accessor] = function(associatedObject) {
obj[self.identifier] = associatedObject ? associatedObject.id : null
return obj.save()
return obj.save([self.identifier]) // passes the changed field to save, so only that field get updated.
}
return this
}
\ No newline at end of file
}
......@@ -51,7 +51,13 @@ Model.prototype.query = function() {
return s.query.apply(s, args)
}
Model.prototype.save = function() {
Model.prototype.save = function(fields) {
// if an array with field names is passed to save() only those fields will be updated.
var values = fields ? {} : this.values;
if(fields){
Utils._.each(fields, function(field) { this.values[field] && (values[field] = this.values[field]) }, this);
}
var attr = this.options.underscored ? 'updated_at' : 'updatedAt'
if(this.hasOwnProperty(attr))
......@@ -70,7 +76,7 @@ Model.prototype.save = function() {
return eventEmitter.run()
} else {
var identifier = this.options.hasPrimaryKeys ? this.definition.primaryKeys : this.id
return this.query(QueryGenerator.updateQuery(this.definition.tableName, this.values, identifier))
return this.query(QueryGenerator.updateQuery(this.definition.tableName, values, identifier))
}
}
......@@ -169,4 +175,4 @@ Model.prototype.equalsOneOf = function(others) {
}
/* Add the instance methods to Model */
Utils._.map(Mixin.instanceMethods, function(fct, name) { Model.prototype[name] = fct})
\ No newline at end of file
Utils._.map(Mixin.instanceMethods, function(fct, name) { Model.prototype[name] = fct})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!