Skip to content

Commit 84cd5a9

Browse files
fix beforeSave on ActiveRecord
1 parent 8520a3d commit 84cd5a9

File tree

7 files changed

+31
-14
lines changed

7 files changed

+31
-14
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Created by .ignore support plugin (hsz.mobi)
22
bower_components
33
node_modules
4-
coverage
4+
coverage
5+
.idea

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# CHANGELOG
22

3+
## 2.0.5
4+
5+
- Fix `beforeSave` on object with nested model without `beforeSave` function
6+
37
## 2.0.0
48

59
- Diff on save

build/app.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ function ActiveRecord(model, name) {
332332
});
333333
} else {
334334
if (obj[key] && obj[key] !== null) {
335-
obj[key] = obj[key].beforeSave(null, { force: true });
335+
obj[key] = obj[key].beforeSave ? obj[key].beforeSave(null, { force: true }) : obj[key];
336336
}
337337
}
338338
} else if (_.isDate(obj[key])) {
@@ -461,8 +461,8 @@ function ActiveRecord(model, name) {
461461

462462
// Get from the model the fields that reference another object
463463
var pop = _.pick(model, function (v) {
464-
if (_.isArray(v)) return v[0].ref;
465-
return v.ref;
464+
if (_.isArray(v)) return v[0].ref && !v[0].nested;
465+
return v.ref && !v.nested;
466466
});
467467

468468
if (populateArray === 'all') {
@@ -704,13 +704,17 @@ function GenericDao(model, qb, discriminators) {
704704
}
705705
}, {
706706
key: 'getHeaders',
707-
value: function getHeaders() {}
707+
value: function getHeaders() {
708+
var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
709+
710+
return opts.headers;
711+
}
708712
}, {
709713
key: 'getOptions',
710714
value: function getOptions() {
711715
var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
712716

713-
opts.headers = this.getHeaders();
717+
opts.headers = this.getHeaders(opts);
714718
return opts;
715719
}
716720
}, {
@@ -811,6 +815,7 @@ function GenericDao(model, qb, discriminators) {
811815
var qb = arguments.length <= 1 || arguments[1] === undefined ? this.query() : arguments[1];
812816
var opts = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
813817

818+
opts = this.getOptions(opts);
814819
return this.$http.get(this.url + '/' + value, _.merge(opts, { params: qb.opts })).then(function (data) {
815820
return new model(_this2.$injector, _this2.url, data.data);
816821
});
@@ -820,6 +825,7 @@ function GenericDao(model, qb, discriminators) {
820825
var qb = arguments.length <= 1 || arguments[1] === undefined ? this.query() : arguments[1];
821826
var opts = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
822827

828+
opts = this.getOptions(opts);
823829
if (toSelect && toSelect.length) {
824830
if (value.ref) {
825831
toSelect = extractId(toSelect);

dest/temp/ActiveRecord.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ function ActiveRecord(model, name) {
331331
});
332332
} else {
333333
if (obj[key] && obj[key] !== null) {
334-
obj[key] = obj[key].beforeSave(null, { force: true });
334+
obj[key] = obj[key].beforeSave ? obj[key].beforeSave(null, { force: true }) : obj[key];
335335
}
336336
}
337337
} else if (_.isDate(obj[key])) {
@@ -460,8 +460,8 @@ function ActiveRecord(model, name) {
460460

461461
// Get from the model the fields that reference another object
462462
var pop = _.pick(model, function (v) {
463-
if (_.isArray(v)) return v[0].ref;
464-
return v.ref;
463+
if (_.isArray(v)) return v[0].ref && !v[0].nested;
464+
return v.ref && !v.nested;
465465
});
466466

467467
if (populateArray === 'all') {

dest/temp/GenericDao.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,17 @@ function GenericDao(model, qb, discriminators) {
6060
}
6161
}, {
6262
key: 'getHeaders',
63-
value: function getHeaders() {}
63+
value: function getHeaders() {
64+
var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
65+
66+
return opts.headers;
67+
}
6468
}, {
6569
key: 'getOptions',
6670
value: function getOptions() {
6771
var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
6872

69-
opts.headers = this.getHeaders();
73+
opts.headers = this.getHeaders(opts);
7074
return opts;
7175
}
7276
}, {
@@ -167,6 +171,7 @@ function GenericDao(model, qb, discriminators) {
167171
var qb = arguments.length <= 1 || arguments[1] === undefined ? this.query() : arguments[1];
168172
var opts = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
169173

174+
opts = this.getOptions(opts);
170175
return this.$http.get(this.url + '/' + value, _.merge(opts, { params: qb.opts })).then(function (data) {
171176
return new model(_this2.$injector, _this2.url, data.data);
172177
});
@@ -176,6 +181,7 @@ function GenericDao(model, qb, discriminators) {
176181
var qb = arguments.length <= 1 || arguments[1] === undefined ? this.query() : arguments[1];
177182
var opts = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
178183

184+
opts = this.getOptions(opts);
179185
if (toSelect && toSelect.length) {
180186
if (value.ref) {
181187
toSelect = extractId(toSelect);

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"author": "flogou <florent.gouget@gmail.com>",
33
"name": "angular-orm",
4-
"version": "2.0.4",
4+
"version": "2.0.5",
55
"description": "",
66
"homepage": "",
77
"dependencies": {
8-
"deep-diff": "~0.3.4"
8+
"deep-diff": "0.3.4"
99
},
1010
"files": [
1111
"src/**/*.js"

src/ActiveRecord.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ export default function ActiveRecord (model, name, SManager = SessionManager(mod
284284
.map(e => e.beforeSave ? e.beforeSave(null, { force: true }) : e)
285285
} else {
286286
if (obj[ key ] && obj[ key ] !== null) {
287-
obj[ key ] = obj[ key ].beforeSave(null, { force: true })
287+
obj[ key ] = obj[ key ].beforeSave ? obj[ key ].beforeSave(null, { force: true }) : obj[ key ]
288288
}
289289
}
290290
} else if (_.isDate(obj[ key ])) {

0 commit comments

Comments
 (0)