ember-resource
ember-resource copied to clipboard
Add support for polymorphic has-many associations
It's possible to "fake" a polymorphic association by using a "class" whose constructor is really a factory method for other classes. Unfortunately, this falls short when the different classes have different parse methods. I suggest the following syntax:
MyBlog.Post = SC.Resource.define({
comments: {
type: SC.ResourceCollection,
itemType: function(json) { return SC.get('MyBlog.%@'.fmt(json.type)); },
url: '/posts/%@/comments'
}
})
If itemType
is a function, it is called with each of the data objects in turn to get the parser and constructor.
The same probably applies for has-one associations:
latestComment: {
type: function(json) { return SC.get('MyBlog.%@'.fmt(json.type)); },
url: '/posts/%@/latestComment'
}
The syntax above isn't sufficient. The problem is that there's no way to distinguish between
latestComment: {
type: function(json) { return SC.get('MyBlog.%@'.fmt(json.type)); },
url: '/posts/%@/latestComment'
}
and
latestComment: {
type: MyBlog.Comment,
url: '/posts/%@/latestComment'
}
since MyBlog.Comment
is also a function.
Perhaps we'll need to add polymorphic: true
to the definition.