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

You need to sign in or sign up before continuing.
Commit 6401eba4 by Mick Hansen

fix(fields): fix paranoid Model.destroy() and custom deletedAt field, closes #2879

1 parent e403b488
......@@ -1470,8 +1470,10 @@ module.exports = (function() {
}).then(function() {
// Run delete query (or update if paranoid)
if (self._timestampAttributes.deletedAt && !options.force) {
var attrValueHash = {};
attrValueHash[self._timestampAttributes.deletedAt] = Utils.now(self.modelManager.sequelize.options.dialect);
var attrValueHash = {}
, field = self.rawAttributes[self._timestampAttributes.deletedAt].field || self._timestampAttributes.deletedAt;
attrValueHash[field] = Utils.now(self.modelManager.sequelize.options.dialect);
return self.QueryInterface.bulkUpdate(self.getTableName(options), attrValueHash, options.where, options, self.rawAttributes);
} else {
return self.QueryInterface.bulkDelete(self.getTableName(options), options.where, options, self);
......
......@@ -500,7 +500,7 @@ describe(Support.getTestDialectTeaser('Model'), function() {
});
});
it('should work with paranoid destroy', function () {
it('should work with paranoid instance.destroy()', function () {
var User = this.sequelize.define('User', {
deletedAt: {
type: DataTypes.DATE,
......@@ -521,6 +521,28 @@ describe(Support.getTestDialectTeaser('Model'), function() {
});
});
});
it('should work with paranoid Model.destroy()', function () {
var User = this.sequelize.define('User', {
deletedAt: {
type: DataTypes.DATE,
field: 'deleted_at'
}
}, {
timestamps: true,
paranoid: true
});
return User.sync({force: true}).then(function () {
return User.create().then(function (user) {
return User.destroy({where: {id: user.get('id')}});
}).then(function () {
return User.findAll().then(function (users) {
expect(users.length).to.equal(0);
});
});
});
});
});
});
});
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!