diff --git a/core/server/models/base/index.js b/core/server/models/base/index.js index 0054405549..308067004c 100644 --- a/core/server/models/base/index.js +++ b/core/server/models/base/index.js @@ -117,7 +117,12 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ */ emitChange: function (model, event, options) { if (!options.transacting) { + if (model._changed && !Object.keys(model._changed).length) { + return; + } + debug(`event trigger without txn: ${event}`); + return common.events.emit(event, model, options); } @@ -137,6 +142,10 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ } _.each(this.ghostEvents, (ghostEvent) => { + if (model._changed && !Object.keys(model._changed).length) { + return; + } + debug(`event: ${ghostEvent}`); common.events.emit(ghostEvent, model, _.omit(options, 'transacting')); }); diff --git a/core/test/regression/models/model_posts_spec.js b/core/test/regression/models/model_posts_spec.js index 0b7eab2abe..ebaae070e1 100644 --- a/core/test/regression/models/model_posts_spec.js +++ b/core/test/regression/models/model_posts_spec.js @@ -449,7 +449,7 @@ describe('Post Model', function () { }); }).then(function () { // txn was successful - Object.keys(eventsTriggered).length.should.eql(6); + Object.keys(eventsTriggered).length.should.eql(4); }); }); @@ -708,8 +708,8 @@ describe('Post Model', function () { should.exist(edited); edited.attributes.status.should.equal('scheduled'); - Object.keys(eventsTriggered).length.should.eql(1); - should.exist(eventsTriggered['post.edited']); + // nothing has changed + Object.keys(eventsTriggered).length.should.eql(0); done(); }).catch(done);