Skip to content

Instantly share code, notes, and snippets.

@NuckChorris
Forked from pixelhandler/transforms.js
Last active February 12, 2018 19:47
Show Gist options
  • Save NuckChorris/927d7d4ba757abd26b30 to your computer and use it in GitHub Desktop.
Save NuckChorris/927d7d4ba757abd26b30 to your computer and use it in GitHub Desktop.
In Ember-CLI, transforms are located in app/transforms/name.js
// app/transforms/array.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.Transform.extend({
deserialize: function(value) {
if (Ember.isArray(value)) {
return Ember.A(value);
} else {
return Ember.A();
}
},
serialize: function(value) {
if (Ember.isArray(value)) {
return Ember.A(value);
} else {
return Ember.A();
}
}
});
// app/transforms/object.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.Transform.extend({
deserialize: function(value) {
if (!Ember.$.isPlainObject(value)) {
return {};
} else {
return value;
}
},
serialize: function(value) {
if (!Ember.$.isPlainObject(value)) {
return {};
} else {
return value;
}
}
});
@tmquinn
Copy link

tmquinn commented Apr 10, 2015

the real trick of this would be accurate dirty checking

@billpull
Copy link

@seanpdoyle DS.attr('array') and DS.attr('object') are not supported by default in ember data only "string, number, boolean and date" so you have to define the transforms yourself.

@jessepinho
Copy link

@billpull Point is, if you don't specify a type in your call to DS.attr(), they'll be passed through as-is, and just work. I just tried this out myself and it worked fine.

@cloke
Copy link

cloke commented Jul 6, 2017

Sort of late to the conversation, but I find these transforms useful if you want to use defaultValue with the attr. Otherwise you are correct, the objects just pass through when no attributes type is passed in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment