#

API Docs for: v3.16.0-alpha.2
Show: Inherited Protected Private Deprecated

# @ember-data_model Module

Defined in: `../model/addon/index.ts:1`

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 `Model`s you define.

An instantiated `Model` is refered 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 Model.extend({
      name: attr(),

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

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

### 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.

This module provides the following classes:

- @ember-data/model
- Model