app/assets/javascripts/backbone-nested-attributes/model.js in backbone-nested-attributes-0.4.2 vs app/assets/javascripts/backbone-nested-attributes/model.js in backbone-nested-attributes-0.4.3
- old
+ new
@@ -1,11 +1,9 @@
(function(Backbone, _) {
var BackboneModelPrototype = Backbone.Model.prototype
- function setNestedAttributes(model, key, value, options) {
- var attributes = attributesFor(key, value, options)
-
+ function setNestedAttributes(model, attributes) {
if (attributes) {
_(model.relations).each(function (relation) {
if (relation.type == 'one') {
setHasOneNestedAttributeFor(model, relation, attributes)
} else {
@@ -183,11 +181,22 @@
return attributes
}
Backbone.NestedAttributesModel = Backbone.Model.extend({
set: function (key, value, options) {
- var attributes = setNestedAttributes(this, key, value, options)
- return BackboneModelPrototype.set.call(this, attributes, options)
+ var attributes
+
+ // Duplicate backbone's behavior to allow separate key/value parameters,
+ // instead of a single 'attributes' object.
+ if (_.isObject(key) || key == null) {
+ attributes = key
+ options = value
+ } else {
+ attributes = {}
+ attributes[key] = value
+ }
+
+ return BackboneModelPrototype.set.call(this, setNestedAttributes(this, attributes), options)
},
toJSON: function (options) {
return nestedToJson(BackboneModelPrototype.toJSON.apply(this, arguments), this.relations, options)
},