Olá estou com uma dúvida sobre a funcionalidade do hook e class methods, pesquisei quando utilizar e estou um pouco confuso, Quando utilizar eles?
Tenho um exemplo de um model:
const bcrypt = require('bcrypt');
module.exports = (sequelize, DataType) => {
    const User = sequelize.define('tb_users', {
        name: {
            type: DataType.STRING,
            allowNull: false,
            validate: {
                notEmpty: true
            }
        },
        email: {
            type: DataType.STRING,
            allowNull: false,
            unique:true,
            validate: {
                isEmail: true,
                notEmpty: true
            }
        },
        password: {
            type: DataType.STRING,
            allowNull: false,
            validate: {
                notEmpty: true
            }
        }
    },
        {
        hooks:{
            beforeCreate: user => {
                const salt = bcrypt.genSaltSync();
                user.set('password',bcrypt.hashSync(user.password,salt));
                console.log(user.password);
            }
        },
        classMethods:{
            isPassword: (encodedPassword, password) => bcrypt.compareSync(password, encodedPassword)   
        }
    });
    return User;
}; 
Que eu adiciono o meu hash a minha password antes de criar, eu poderia colocar nesse before, uma validação (sobre existir um login já criado no banco de dados)?
Se alguém puder me esclarecer qual o uso principalmente do classMethods e como eu poderia chamar ele no meu controller.