Class Model

In EmberData a Model is a class defining the attributes and relationships of a specific resource type (model name). In this sense it represents a static "schema".

Data for individual resources fetched from your API is presented to the UI via instances of the Models you define.

An instantiated Model is referred to as a record.

When we refer to the ModelClass we are referring to the class definition and the static schema methods present on it.

When we refer to a record we refer to a specific class instance presenting the resource data for a given type and id.

Defining a Model

 import Model, { attr, belongsTo, hasMany } from '@ember-data/model';

 export default class PersonModel extends Model {
   @attr name;

   @belongsTo('pet', { inverse: 'owners', async: false }) dog;

   @hasMany('person', { inverse: 'friends', async: true }) friends;

modelName convention

By convention, the name of a given model (its type) matches the name of the file in the app/models folder and should be lowercase, singular and dasherized. @mainName @ember-data/model @tag main


Fired when the record enters the error state.

Fired when the record becomes invalid.

Fired when a new record is commited to the server.

Fired when the record is deleted.

Fired when the record is loaded from the server.

Fired when the record is updated.

Fired when the record is ready to be interacted with, that is either loaded from the server or created locally.

Fired when the record is rolled back.