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;
}
}
});
@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