diff --git a/packages/ember-data/lib/serializers/json_serializer.js b/packages/ember-data/lib/serializers/json_serializer.js index d17f9dfd4e5..611666310e5 100644 --- a/packages/ember-data/lib/serializers/json_serializer.js +++ b/packages/ember-data/lib/serializers/json_serializer.js @@ -391,9 +391,9 @@ DS.JSONSerializer = Ember.Object.extend({ var relationshipType = DS.RelationshipChange.determineRelationshipType(record.constructor, relationship); - if (relationshipType === 'manyToNone' || relationshipType === 'manyToMany') { + if (relationshipType === 'manyToNone' || relationshipType === 'manyToOne' || relationshipType === 'manyToMany') { json[key] = get(record, key).mapBy('id'); - // TODO support for polymorphic manyToNone and manyToMany relationships + // TODO support for polymorphic manyToNone, manyToOne and manyToMany relationships } }, diff --git a/packages/ember-data/tests/integration/serializers/json_serializer_test.js b/packages/ember-data/tests/integration/serializers/json_serializer_test.js index ce78ec5025b..d64e88bf3d9 100644 --- a/packages/ember-data/tests/integration/serializers/json_serializer_test.js +++ b/packages/ember-data/tests/integration/serializers/json_serializer_test.js @@ -112,3 +112,26 @@ test("serializePolymorphicType", function() { postTYPE: "post" }); }); + + +test("serializeHasMany", function() { + Post.reopen({ + comments: DS.hasMany('comment') + }); + + post = env.store.createRecord(Post, { title: "Rails is omakase", id: "1"}); + comment = env.store.createRecord(Comment, { body: "Omakase is delicious", post: post}); + post.get('comments').addObject(comment); + + deepEqual(post.get('comments.content'), + [comment] + ); + + var json = {}; + + env.serializer.serializeHasMany(post, json, {key: "comments", options: {}}); + + deepEqual(json, { + comments: [comment.get('id')] + }); +}); diff --git a/packages/ember-data/tests/integration/serializers/rest_serializer_test.js b/packages/ember-data/tests/integration/serializers/rest_serializer_test.js index 27fcf55a20c..c4616476fc9 100644 --- a/packages/ember-data/tests/integration/serializers/rest_serializer_test.js +++ b/packages/ember-data/tests/integration/serializers/rest_serializer_test.js @@ -264,7 +264,8 @@ test("serializeIntoHash", function() { deepEqual(json, { homePlanet: { - name: "Umber" + name: "Umber", + superVillains: [] } }); }); @@ -278,7 +279,8 @@ test("serializeIntoHash with decamelized typeKey", function() { deepEqual(json, { homePlanet: { - name: "Umber" + name: "Umber", + superVillains: [] } }); });