Qual é o motivo por trás da reabertura da classe de modelo?

Notei que o modelo de backup define um modelo e depois o reabre algumas linhas abaixo no mesmo arquivo, adicionando funções como find, start, cancel etc. Estou me perguntando qual é o motivo disso. Por que a classe precisa ser reaberta? Tenho certeza de que há um motivo válido… só não sei qual é :slight_smile:

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

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

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

Ótima pergunta, eu também fiquei um pouco confuso com isso!

reopenClass é usado para adicionar métodos estáticos (ou propriedades) à própria classe. Não acho que haja uma maneira de definir um método estático através de Ember.Object.extend.

Mais informações sobre reopenClass e reopen: https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/