@@ -10,15 +10,15 @@ To declare a one-to-one relationship between two models, use
10
10
import Model , { belongsTo } from ' @ember-data/model' ;
11
11
12
12
export default class UserModel extends Model {
13
- @belongsTo (' profile' ) profile;
13
+ @belongsTo (' profile' , { async : true , inverse : ' user ' } ) profile;
14
14
}
15
15
```
16
16
17
17
``` javascript {data-filename=app/models/profile.js}
18
18
import Model , { belongsTo } from ' @ember-data/model' ;
19
19
20
20
export default class ProfileModel extends Model {
21
- @belongsTo (' user' ) user;
21
+ @belongsTo (' user' , { async : true , inverse : ' profile ' } ) user;
22
22
}
23
23
```
24
24
@@ -31,15 +31,15 @@ To declare a one-to-many relationship between two models, use
31
31
import Model , { hasMany } from ' @ember-data/model' ;
32
32
33
33
export default class BlogPostModel extends Model {
34
- @hasMany (' comment' ) comments;
34
+ @hasMany (' comment' , { async : true , inverse : ' blogPost ' } ) comments;
35
35
}
36
36
```
37
37
38
38
``` javascript {data-filename=app/models/comment.js}
39
39
import Model , { belongsTo } from ' @ember-data/model' ;
40
40
41
41
export default class CommentModel extends Model {
42
- @belongsTo (' blog-post' ) blogPost;
42
+ @belongsTo (' blog-post' , { async : true , inverse : ' comments ' } ) blogPost;
43
43
}
44
44
```
45
45
@@ -52,68 +52,53 @@ To declare a many-to-many relationship between two models, use
52
52
import Model , { hasMany } from ' @ember-data/model' ;
53
53
54
54
export default class BlogPostModel extends Model {
55
- @hasMany (' tag' ) tags;
55
+ @hasMany (' tag' , { async : true , inverse : ' blogPosts ' } ) tags;
56
56
}
57
57
```
58
58
59
59
``` javascript {data-filename=app/models/tag.js}
60
60
import Model , { hasMany } from ' @ember-data/model' ;
61
61
62
62
export default class TagModel extends Model {
63
- @hasMany (' blog-post' ) blogPosts;
63
+ @hasMany (' blog-post' , { async : true , inverse : ' tags ' } ) blogPosts;
64
64
}
65
65
```
66
66
67
- ### Explicit Inverses
67
+ ### No Inverse Relations
68
68
69
- EmberData will do its best to discover which relationships map to one
70
- another. In the one-to-many code above, for example, EmberData can figure out that
71
- changing the ` comments ` relationship should update the ` blogPost `
72
- relationship on the inverse because ` blogPost ` is the only relationship to
73
- that model.
74
-
75
- However, sometimes you may have multiple ` belongsTo ` /` hasMany ` s for
76
- the same type. You can specify which property on the related model is
77
- the inverse using ` belongsTo ` or ` hasMany ` 's ` inverse `
78
- option. Relationships without an inverse can be indicated as such by
79
- including ` { inverse: null } ` .
69
+ If an inverse relationship exists and you wish changes on one side
70
+ to reflect onto the other side, use the inverse key.
71
+ If you wish to not have changes reflected or
72
+ no inverse relationship exists, specify ` {inverse: null } ` .
80
73
81
74
``` javascript {data-filename=app/models/comment.js}
82
75
import Model , { belongsTo } from ' @ember-data/model' ;
83
76
84
77
export default class CommentModel extends Model {
85
- @belongsTo (' blog-post' , { inverse: null }) onePost;
86
- @belongsTo (' blog-post' ) twoPost;
87
- @belongsTo (' blog-post' ) redPost;
88
- @belongsTo (' blog-post' ) bluePost;
78
+ @belongsTo (' blog-post' , { async: true , inverse: null }) blogPost;
89
79
}
90
80
```
91
81
92
82
``` javascript {data-filename=app/models/blog-post.js}
93
83
import Model , { hasMany } from ' @ember-data/model' ;
94
84
95
85
export default class BlogPostModel extends Model {
96
- @hasMany (' comment' , {
97
- inverse: ' redPost'
98
- })
99
- comments;
100
86
}
101
87
```
102
88
103
89
### Reflexive Relations
104
90
105
- When you want to define a reflexive relation (a model that has a relationship to
106
- itself), you must explicitly define the inverse relationship. If there
107
- is no inverse relationship then you can set the inverse to ` null ` .
91
+ If you want to define a reflexive relation (a model that has a relationship to
92
+ itself), you can do it via specifying ` inverse ` .
108
93
109
94
Here's an example of a one-to-many reflexive relationship:
110
95
111
96
``` javascript {data-filename=app/models/folder.js}
112
97
import Model , { belongsTo , hasMany } from ' @ember-data/model' ;
113
98
114
99
export default class FolderModel extends Model {
115
- @hasMany (' folder' , { inverse: ' parent' }) children;
116
- @belongsTo (' folder' , { inverse: ' children' }) parent;
100
+ @hasMany (' folder' , { async : true , inverse: ' parent' }) children;
101
+ @belongsTo (' folder' , { async : true , inverse: ' children' }) parent;
117
102
}
118
103
```
119
104
@@ -124,7 +109,7 @@ import Model, { attr, belongsTo } from '@ember-data/model';
124
109
125
110
export default class UserModel extends Model {
126
111
@attr (' string' ) name;
127
- @belongsTo (' user' , { inverse: ' bestFriend' }) bestFriend;
112
+ @belongsTo (' user' , { async : true , inverse: ' bestFriend' }) bestFriend;
128
113
}
129
114
```
130
115
@@ -134,7 +119,7 @@ You can also define a reflexive relationship that doesn't have an inverse:
134
119
import Model , { belongsTo } from ' @ember-data/model' ;
135
120
136
121
export default class FolderModel extends Model {
137
- @belongsTo (' folder' , { inverse: null }) parent;
122
+ @belongsTo (' folder' , { async : true , inverse: null }) parent;
138
123
}
139
124
```
140
125
@@ -156,15 +141,15 @@ First, let's look at the model definitions:
156
141
import Model , { hasMany } from ' @ember-data/model' ;
157
142
158
143
export default class UserModel extends Model {
159
- @hasMany (' payment-method' , { polymorphic: true }) paymentMethods;
144
+ @hasMany (' payment-method' , { async : true , inverse : ' user ' , polymorphic: true }) paymentMethods;
160
145
}
161
146
```
162
147
163
148
``` javascript {data-filename=app/models/payment-method.js}
164
149
import Model , { belongsTo } from ' @ember-data/model' ;
165
150
166
151
export default class PaymentMethodModel extends Model {
167
- @belongsTo (' user' , { inverse: ' paymentMethods' }) user;
152
+ @belongsTo (' user' , { async : true , inverse: ' paymentMethods' }) user;
168
153
}
169
154
```
170
155
@@ -277,15 +262,15 @@ Let's assume that we have a `blog-post` and a `comment` model. A single blog pos
277
262
import Model , { hasMany } from ' @ember-data/model' ;
278
263
279
264
export default class BlogPostModel extends Model {
280
- @hasMany (' comment' ) comments;
265
+ @hasMany (' comment' , { async : true , inverse : ' blogPost ' } ) comments;
281
266
}
282
267
```
283
268
284
269
``` javascript {data-filename=app/models/comment.js}
285
270
import Model , { belongsTo } from ' @ember-data/model' ;
286
271
287
272
export default class CommentModel extends Model {
288
- @belongsTo (' blog-post' ) blogPost;
273
+ @belongsTo (' blog-post' , { async : true , inverse : ' comments ' } ) blogPost;
289
274
}
290
275
```
291
276
0 commit comments