« All deprecation guides

Deprecation Guide for Non-primitive defaultValue for Model Attributes

until: 3.0.0
id: non-primitive-defaultvalue-for-model-attributes

Providing a non-primitive value as a defaultValue has been deprecated because the provided value is shared between all instances of the model. Using a non-primitive value, such as defaultValue: [], can lead to unexpected bugs when that value is mutated.

If you wish to continue using a non-primitive value as the defaultValue for an attribute, you should provide a function that returns the value:

import DS from 'ember-data';

export default DS.Model.extend({
  username: DS.attr('string'),
  createdAt: DS.attr('date', {
    defaultValue() {
      return new Date();
    }
  })
});