Secuela: Cambiando el esquema del modelo en producción.

Estamos usando el ormsequelize.js y han definido un modelo como tal:

module.exports = function(sequelize, DataTypes) {
    var Source = sequelize.define('Source', {
        name: {
            type: DataTypes.STRING, 
            allowNull: false, 
            unique: true
        }
    }, {
        paranoid: true
    });

    return Source;
};

Esto se implementa en producción y se sincroniza con la base de datos usandosequelize.sync. El siguiente paso, agregamos un parámetro:

module.exports = function(sequelize, DataTypes) {
    var Source = sequelize.define('Source', {
        name: {
            type: DataTypes.STRING, 
            allowNull: false, 
            unique: true
        }, 
            location: {
                    type: DataTypes.STRING
            }
    }, {
        paranoid: true
    });

    return Source;
};

Sin embargo, al desplegar a producciónsequelize.sync No agrega este nuevo parámetro. Esto es porquesync hace un:

CREATE TABLE IF NOT EXISTS

Y realmente no actualiza el esquema si la tabla existe. Esto esanotado en su documentación.

La única opción parece ser{ force: true }Sin embargo, esto no está bien para una base de datos de producción.

¿Alguien sabe cómo actualizar correctamente el esquema cuando los cambios son necesarios?

Respuestas a la pregunta(1)

Su respuesta a la pregunta