He estado investigando el desarrollo de plugins y noté que, en casos como el traductor de Discourse, después de recuperar un modelo de widget mediante findAncestorModel(), se verifica si el resultado existe antes de continuar. Esto también aparece en el código fuente, por ejemplo: ejemplo:
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
Sin embargo, también hay casos en los que no verificamos la existencia del modelo ascendente, unas líneas más abajo:
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
¿Qué tan confiable es la existencia del resultado de findAncestorModel? ¿Depende del widget en el que nos encontremos, o es buena práctica siempre manejar una respuesta nula, incluso en situaciones donde parece muy poco probable, como en el menú de publicaciones?