¿Cuál es la razón detrás de volver a abrir la clase de modelo?

He notado que el modelo de respaldo define un modelo y luego lo vuelve a abrir unas líneas más abajo en el mismo archivo, agregando funciones como find, start, cancel, etc. Me pregunto cuál es la razón detrás de esto. ¿Por qué es necesario volver a abrir la clase? Estoy seguro de que hay una razón válida… simplemente no la conozco :slight_smile:

const Backup = Discourse.Model.extend({
  destroy() {},
  restore() {}
});

Backup.reopenClass({
  find() {
  ...
  }
  // etc
});

Ver: https://github.com/discourse/discourse/blob/master/app/assets/javascripts/admin/models/backup.js.es6

¡Buena pregunta! Yo también estuve un poco confundido con esto.

reopenClass se usa para agregar métodos estáticos (o propiedades) a la propia clase. No creo que haya una manera de definir un método estático mediante Ember.Object.extend.

Un poco más de información sobre reopenClass y reopen: https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/