Skip to content

Commit

Permalink
system/relationships: Adjust code samples to ember-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
Turbo87 committed Jun 5, 2015
1 parent 97f39ac commit 0aabfd7
Show file tree
Hide file tree
Showing 3 changed files with 119 additions and 52 deletions.
30 changes: 22 additions & 8 deletions packages/ember-data/lib/system/relationships/belongs-to.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,18 @@ import normalizeModelName from "ember-data/system/normalize-model-name";
To declare a one-to-one relationship between two models, use
`DS.belongsTo`:
```javascript
App.User = DS.Model.extend({
```app/models/user.js
import DS from 'ember-data';
export default DS.Model.extend({
profile: DS.belongsTo('profile')
});
```
App.Profile = DS.Model.extend({
```app/models/profile.js
import DS from 'ember-data';
export default DS.Model.extend({
user: DS.belongsTo('user')
});
```
Expand All @@ -33,21 +39,29 @@ import normalizeModelName from "ember-data/system/normalize-model-name";
To declare a one-to-many relationship between two models, use
`DS.belongsTo` in combination with `DS.hasMany`, like this:
```javascript
App.Post = DS.Model.extend({
```app/models/post.js
import DS from 'ember-data';
export default DS.Model.extend({
comments: DS.hasMany('comment')
});
```
```app/models/comment.js
import DS from 'ember-data';
App.Comment = DS.Model.extend({
export default DS.Model.extend({
post: DS.belongsTo('post')
});
```
You can avoid passing a string as the first parameter. In that case Ember Data
will infer the type from the key name.
```javascript
App.Comment = DS.Model.extend({
```app/models/comment.js
import DS from 'ember-data';
export default DS.Model.extend({
post: DS.belongsTo()
});
```
Expand Down
88 changes: 62 additions & 26 deletions packages/ember-data/lib/system/relationships/ext.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,10 @@ Model.reopenClass({
For example, if you define a model like this:
```javascript
App.Post = DS.Model.extend({
```app/models/post.js
import DS from 'ember-data';
export default DS.Model.extend({
comments: DS.hasMany('comment')
});
```
Expand All @@ -192,14 +194,20 @@ Model.reopenClass({
For example, if you define models like this:
```javascript
App.Post = DS.Model.extend({
comments: DS.hasMany('message')
});
```app/models/post.js
import DS from 'ember-data';
App.Message = DS.Model.extend({
owner: DS.belongsTo('post')
});
export default DS.Model.extend({
comments: DS.hasMany('message')
});
```
```app/models/message.js
import DS from 'ember-data';
export default DS.Model.extend({
owner: DS.belongsTo('post')
});
```
App.Post.inverseFor('comments') -> {type: App.Message, name:'owner', kind:'belongsTo'}
Expand Down Expand Up @@ -319,8 +327,10 @@ Model.reopenClass({
For example, given the following model definition:
```javascript
App.Blog = DS.Model.extend({
```app/models/blog.js
import DS from 'ember-data';
export default DS.Model.extend({
users: DS.hasMany('user'),
owner: DS.belongsTo('user'),
posts: DS.hasMany('post')
Expand All @@ -331,7 +341,10 @@ Model.reopenClass({
relationships, like this:
```javascript
var relationships = Ember.get(App.Blog, 'relationships');
import Ember from 'ember';
import Blog from 'app/models/blog';
var relationships = Ember.get(Blog, 'relationships');
relationships.get(App.User);
//=> [ { name: 'users', kind: 'hasMany' },
// { name: 'owner', kind: 'belongsTo' } ]
Expand All @@ -352,8 +365,10 @@ Model.reopenClass({
by the relationship kind. For example, given a model with this
definition:
```javascript
App.Blog = DS.Model.extend({
```app/models/blog.js
import DS from 'ember-data';
export default DS.Model.extend({
users: DS.hasMany('user'),
owner: DS.belongsTo('user'),
Expand All @@ -364,7 +379,10 @@ Model.reopenClass({
This property would contain the following:
```javascript
var relationshipNames = Ember.get(App.Blog, 'relationshipNames');
import Ember from 'ember';
import Blog from 'app/models/blog';
var relationshipNames = Ember.get(Blog, 'relationshipNames');
relationshipNames.hasMany;
//=> ['users', 'posts']
relationshipNames.belongsTo;
Expand Down Expand Up @@ -398,8 +416,10 @@ Model.reopenClass({
For example, given a model with this definition:
```javascript
App.Blog = DS.Model.extend({
```app/models/blog.js
import DS from 'ember-data';
export default DS.Model.extend({
users: DS.hasMany('user'),
owner: DS.belongsTo('user'),
Expand All @@ -410,7 +430,10 @@ Model.reopenClass({
This property would contain the following:
```javascript
var relatedTypes = Ember.get(App.Blog, 'relatedTypes');
import Ember from 'ember';
import Blog from 'app/models/blog';
var relatedTypes = Ember.get(Blog, 'relatedTypes');
//=> [ App.User, App.Post ]
```
Expand All @@ -428,8 +451,10 @@ Model.reopenClass({
For example, given a model with this
definition:
```javascript
App.Blog = DS.Model.extend({
```app/models/blog.js
import DS from 'ember-data';
export default DS.Model.extend({
users: DS.hasMany('user'),
owner: DS.belongsTo('user'),
Expand All @@ -440,7 +465,10 @@ Model.reopenClass({
This property would contain the following:
```javascript
var relationshipsByName = Ember.get(App.Blog, 'relationshipsByName');
import Ember from 'ember';
import Blog from 'app/models/blog';
var relationshipsByName = Ember.get(Blog, 'relationshipsByName');
relationshipsByName.get('users');
//=> { key: 'users', kind: 'hasMany', type: App.User }
relationshipsByName.get('owner');
Expand All @@ -461,18 +489,24 @@ Model.reopenClass({
For example:
```javascript
```app/models/blog.js
import DS from 'ember-data';
App.Blog = DS.Model.extend({
export default DS.Model.extend({
users: DS.hasMany('user'),
owner: DS.belongsTo('user'),
posts: DS.hasMany('post'),
title: DS.attr('string')
});
```
var fields = Ember.get(App.Blog, 'fields');
```js
import Ember from 'ember';
import Blog from 'app/models/blog';
var fields = Ember.get(Blog, 'fields');
fields.forEach(function(kind, field) {
console.log(field, kind);
});
Expand Down Expand Up @@ -588,8 +622,10 @@ Model.reopen({
Example
```javascript
App.ApplicationSerializer = DS.JSONSerializer.extend({
```app/serializers/application.js
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
serialize: function(record, options) {
var json = {};
Expand Down
53 changes: 35 additions & 18 deletions packages/ember-data/lib/system/relationships/has-many.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,18 @@ import normalizeModelName from "ember-data/system/normalize-model-name";
To declare a one-to-many relationship between two models, use
`DS.belongsTo` in combination with `DS.hasMany`, like this:
```javascript
App.Post = DS.Model.extend({
```app/models/post.js
import DS from 'ember-data';
export default DS.Model.extend({
comments: DS.hasMany('comment')
});
```
```app/models/comment.js
import DS from 'ember-data';
App.Comment = DS.Model.extend({
export default DS.Model.extend({
post: DS.belongsTo('post')
});
```
Expand All @@ -34,21 +40,29 @@ import normalizeModelName from "ember-data/system/normalize-model-name";
To declare a many-to-many relationship between two models, use
`DS.hasMany`:
```javascript
App.Post = DS.Model.extend({
```app/models/post.js
import DS from 'ember-data';
export default DS.Model.extend({
tags: DS.hasMany('tag')
});
```
App.Tag = DS.Model.extend({
```app/models/tag.js
import DS from 'ember-data';
export default DS.Model.extend({
posts: DS.hasMany('post')
});
```
You can avoid passing a string as the first parameter. In that case Ember Data
will infer the type from the singularized key name.
```javascript
App.Post = DS.Model.extend({
```app/models/post.js
import DS from 'ember-data';
export default DS.Model.extend({
tags: DS.hasMany()
});
```
Expand All @@ -67,19 +81,22 @@ import normalizeModelName from "ember-data/system/normalize-model-name";
same type. You can specify which property on the related model is
the inverse using `DS.hasMany`'s `inverse` option:
```javascript
var belongsTo = DS.belongsTo,
hasMany = DS.hasMany;
```app/models/comment.js
import DS from 'ember-data';
App.Comment = DS.Model.extend({
onePost: belongsTo('post'),
twoPost: belongsTo('post'),
redPost: belongsTo('post'),
bluePost: belongsTo('post')
export default DS.Model.extend({
onePost: DS.belongsTo('post'),
twoPost: DS.belongsTo('post'),
redPost: DS.belongsTo('post'),
bluePost: DS.belongsTo('post')
});
```
```app/models/post.js
import DS from 'ember-data';
App.Post = DS.Model.extend({
comments: hasMany('comment', {
export default DS.Model.extend({
comments: DS.hasMany('comment', {
inverse: 'redPost'
})
});
Expand Down

0 comments on commit 0aabfd7

Please sign in to comment.