module.exports = function(Address) { Address.validate('default',isEnabled,{message: 'No se puede poner predeterminado un consignatario desactivado'}); function isEnabled(err) { if (!this.enabled && this.default) err(); } Address.observe('before save', function (ctx, next) { var data = getData(ctx); if (isEnabled(data) && isDefault(data)) { updateData(ctx); } next(); }); function getData(ctx){ if(ctx.data) return ctx.data; else return ctx.instance; } function isEnabled(data){ return data.isEnabled; } function isDefault(data){ return data.default; } function updateData(ctx){ ctx.Model.update({client: ctx.data.client}, {default: false}); } };