Skip to content

Instantly share code, notes, and snippets.

@jelhan
Created July 24, 2018 21:48
Show Gist options
  • Save jelhan/89b40ca9d44a34537fe296e087a52b83 to your computer and use it in GitHub Desktop.
Save jelhan/89b40ca9d44a34537fe296e087a52b83 to your computer and use it in GitHub Desktop.
export default function() {
this.resource('users');
this.resource('accounts');
}
import { Model, hasMany } from 'ember-cli-mirage';
export default Model.extend({
users: hasMany()
});
import { Model, hasMany } from 'ember-cli-mirage';
export default Model.extend({
accounts: hasMany
});
import { JSONAPISerializer } from 'ember-cli-mirage';
export default JSONAPISerializer.extend({
});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
users: hasMany()
});
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { belongsTo, hasMany } from 'ember-data/relationships';
export default Model.extend({
accounts: hasMany()
});
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
const Router = EmberRouter.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('sign-up');
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('account');
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model () {
let account = this.store.createRecord('account');
let dentist = this.store.createRecord('user');
let officeContact = this.store.createRecord('user');
// store.createRecord is not async, therefore returning POJO is fine
return {
dentist: dentist,
officeContact: officeContact,
account: account,
};
},
actions: {
register () {
let item = this.modelFor(this.routeName);
item.account.save()
.then(function() {
item.account.get('users').addObject(item.dentist);
item.account.get('users').addObject(item.officeContact);
item.dentist.save().then(function() {
item.officeContact.save()
})
}).then(() => this.transitionTo('/'))
}
}
});
<p><i>Reproduction for https://discuss.emberjs.com/t/how-do-i-configure-a-many-to-many-relationship/15158</i></p>
{{#link-to 'sign-up'}}sign up{{/link-to}}
{{outlet}}
<h1>Accounts</h1>
{{#each model as |account|}}
<h1>{{account.name}}</h1>
<ul>
{{#each account.users as |user|}}
<li>{{user.name}}</li>
{{/each}}
</ul>
{{/each}}
<h1>sign up</h1>
Account name: <input type="text" onchange={{action (mut model.account.name) value="target.value"}}><br>
Dentist name: <input type="text" onchange={{action (mut model.dentist.name) value="target.value"}}><br>
Office contact name: <input type="text" onchange={{action (mut model.officeContact.name) value="target.value"}}><br>
<button onclick={{route-action 'register'}}>sign up</button>
{
"version": "0.15.0",
"ENV": {
"ember-cli-mirage": {
"enabled": true
}
},
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.2.2",
"ember-template-compiler": "3.2.2",
"ember-testing": "3.2.2"
},
"addons": {
"ember-data": "3.2.0",
"ember-cli-mirage": "0.4.7",
"ember-route-action-helper": "2.0.6"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment