When using ember-data and ember-cli, model instances are reported in the console and browser extension (via toString()
with something like <(subclass of DS.Model):ember815:1234>
. How can have the actual model name be shown?
The resolver is aware of naming can be extended to attach properties to classes as they are resolved. Then the toString()
method can be overridden on DS.Model
.
In ext/resolve-model-names.coffee
`import Resolver from 'ember/resolver'`
Resolver.reopen({
resolve: function (fullName) {
var parsedName = this.parseName(fullName);
var resolved = this._super(fullName);
if (resolved && parsedName.type === 'model') {
resolved.typeKey = parsedName.name.camelize();
}
return resolved;
});
DS.Model.reopen({
toString: function() {
"(DS.Model) " + this.constructor.typeKey + " #" + this.get('id');
}
});
In app.js
import Resolver from 'ember/resolver';
import './ext/resolve-model-names';
var App = Ember.Application.extend({
// ...
Resolver: Resolver
})
Now you will see (DS.Model)Post#1234
Actually my code is organized a bit differently, hopefully this is clear enough.