Accounts.onCreateUser agregando atributos adicionales mientras crea nuevos usuarios, ¿buenas prácticas?

Estoy creando un nuevo usuario conAccounts.createUser () y funciona normalmente si no estás haciendo nada elegante. Pero quiero agregar algunos otros campos al nuevo usuario que no figuran en la documentación. Aquí está mi código:

var options = {
    username: "funnyUserNameHere",
    email: "[email protected]",
    password: "drowssap",
    profile: {
        name: "Real Name"
    },
    secretAttribute: "secretString"
};

var userId = Accounts.createUser(options);

En este ejemplo, he agregado secretAttribute a mi objeto de opciones. Debido a que esto no está documentado, es justo que no esté agregando mi atributo bajo el objeto de usuario.

Así que busqué en Google y descubrí que algo como esto podría funcionar:

Accounts.onCreateUser(function(options, user) {
    if (options.secretAttribute)
        user.secretAttribute = options.secretAttribute;

    return user;
});

¡Y si! Esto funciona, pero siempre hay BUTT .. * PERO .. Después de este no se guardaperfil más bajo el objeto de usuario. Sin embargo, esto lo hace funcionar:

Accounts.onCreateUser(function(options, user) {
    if (options.secretAttribute)
        user.secretAttribute = options.secretAttribute;

    if (options.profile)
        user.profile = options.profile;

    return user;
});

Entonces, ¿qué quiero de ustedes, chicos?

Quiero saber por qué onCreateUser pierde el perfil (antes de la solución anterior) en mi caso.¿Es mi enfoque una buena práctica?¿Existe una mejor solución para agregar atributos adicionales para el objeto de usuario al crearlos?

ps: creo que es obvio por qué no quiero guardar todos los campos adicionales en el perfil;)

Respuestas a la pregunta(3)

Su respuesta a la pregunta