Qual è la ragione dietro la riapertura della classe modello?

Ho notato che il modello di backup definisce un modello e poi lo riapre poche righe più avanti nello stesso file, aggiungendo funzioni come find, start, cancel, ecc. Mi chiedo qual è il motivo dietro questo approccio? Perché la classe deve essere riaperta? Sono sicuro che ci sia una ragione valida… semplicemente non la conosco :slight_smile:

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

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

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

Bella domanda, anche io ero un po’ confuso su questo!

reopenClass viene utilizzato per aggiungere metodi statici (o proprietà) alla classe stessa. Non credo esista un modo per definire un metodo statico tramite Ember.Object.extend.

Altre informazioni su reopenClass e reopen: https://guides.emberjs.com/release/object-model/reopening-classes-and-instances/