diff --git a/lib/Instance.js b/lib/Instance.js index bde4899..2a7b2bf 100644 --- a/lib/Instance.js +++ b/lib/Instance.js @@ -126,6 +126,9 @@ Instance.prototype.save = function(conditions, changes, callback) { } if(!changes) { + var validation = validate(schema, this.__state.modified, undefined, this.__state.model.extraValidators); + if(!validation.passed) return callback(validation.toError()); + var original = _.cloneDeep(this.__state.original); var modified = _.cloneDeep(this.__state.modified); @@ -232,9 +235,7 @@ Instance.prototype.__extendSchema = function() { }, set: function(value) { /// Set the value of this field. Changes may be committed by calling save() on this instance. - var validation = validate(schema[targetProperty], value, targetProperty, this.__state.model.extraValidators); - if (!validation.passed) throw validation.toError(); - $.__state.modified[targetProperty] = value; + $.__state.modified[targetProperty] = value; }, enumerable: true }); @@ -269,8 +270,6 @@ Instance.forModel = function(model) { return this.__state.modified[name] === undefined ? null : this.__state.modified[name]; }, set: function(value) { - var validation = validate(validator, value, name, model.extraValidators); - if(!validation.passed) throw validation.toError(); this.__state.modified[name] = value; }, enumerable: true