Como posso estender o construtor de um recurso AngularJS ($ resource)?

Eu tenho um modelo, definido usando$resource, que estou carregando com sucesso.

Cada instância carregada é, como prometido, uma instância da classe que defini.

(O exemplo abaixo é dos documentos angulares. Nele,User.get resulta em um objeto que é uminstanceof User.)

var User = $resource('/user/:userId', {userId:'@id'});

No entanto, imagine cada usuário vem através do fio assim:

{
  "username": "Bob",
  "preferences": [
    {
      "id": 1,
      "title": "foo",
      "value": false
    }
  ] 
}

Eu defini umPreference fábrica que adiciona métodos valiosos paraPreference objetos. Mas quando um usuário carrega, aquelespreferences não sãoPreferences, naturalmente.

Eu tentei isso:

User.prototype.constructor = function(obj) {
  _.extend(this, obj);
  this.items = _.map(this.preferences, function(pref) {
    return new Preference(pref);
  });
  console.log('Our constructor ran'); // never logs anything
}

Mas isso não tem efeito e nunca registra nada.

Como posso fazer cada item na minhaUsers 'preferences array uma instância dePreference?

questionAnswers(5)

yourAnswerToTheQuestion