Function

type
String|Object
the attribute type
options
Object
a hash of options
returns
Attribute

attr defines an attribute on a Model. By default, attributes are passed through as-is, however you can specify an optional type to have the value automatically transformed. Ember Data ships with four basic transform types: string, number, boolean and date. You can define your own transforms by subclassing Transform.

Note that you cannot use attr to define an attribute of id.

attr takes an optional hash as a second parameter, currently supported options are:

  • defaultValue: Pass a string or a function to be called to set the attribute to a default value if and only if the key is absent from the payload response.

Example

app/models/user.js
1
2
3
4
5
6
7
8
import Model, { attr } from '@ember-data/model';

export default class UserModel extends Model {
  @attr('text', {
    uppercase: true
  })
  text;
}
app/transforms/text.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import Transform from '@ember-data/serializer/transform';

export default class TextTransform extends Transform {
  serialize(value, options) {
    if (options.uppercase) {
      return value.toUpperCase();
    }

    return value;
  }

  deserialize(value) {
    return value;
  }
}