Это почти случай использования , описанный в документах "один к одному" , где вы определяете пользовательские данные с помощью одной модели и связываете другую модель с атрибутом ownTo:
// app/models/user.js
import DS from 'ember-data';
export default DS.Model.extend({
user: DS.attr('string'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
url: DS.attr('string'),
profile: DS.belongsTo('profile')
});
Затем настройте модель профиля с любыми дополнительными значениями, которые вы хотите добавить, и определите также атрибут ownTo:
// app/models/profile.js
import DS from 'ember-data';
export default DS.Model.extend({
age: DS.attr('string'),
address: DS.attr('string'),
user: DS.belongsTo('user')
});
В вашем файле маршрутов вы захотите настроить идентификатор пользователя для определения вашей структуры URL следующим образом:
//app/router.js
Router.map(function() {
this.route('users');
this.route('user', { path: '/user/:user_id' });
});
Затем, наконец, вам нужно загрузить данные , получив соответствующие записи и загрузив их через файл маршрута.
// app/routes/user.js
import Route from '@ember/routing/route';
export default Route.extend({
model(params) {
return this.store.findRecord('user', params.user_id, {include: 'profile'});
}
});
Стоит отметить, что вам также может нужен сериализатор , чтобы преобразовать данные в нужный вам формат.