У меня есть три модели: Компании, Person и задачи. В компании много людей. У человека есть одна компания. У компании много задач. У человека много задач.полиморфные отношений в Ember-данных
Соотношения задач являются полиморфными.
Вот мои модели
App.Taskable = DS.Model.extend({
tasks: DS.hasMany('task')
});
App.Task = DS.Model.extend({
subject: DS.attr('string'),
taskable: DS.belongsTo('taskable', { polymorphic: true})
});
App.Person = App.Taskable.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
email: DS.attr('string'),
company: DS.belongsTo('company'),
fullName: function() {
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
});
App.Company = App.Taskable.extend({
name: DS.attr('string'),
people: DS.hasMany('person')
});
Обратите внимание, что лицо и Компания продлить Taskable. Я считаю, что эти отношения определены правильно. Я не знаю, как лениво загружать задачи.
Вот мой взгляд человек
<script type="text/x-handlebars" data-template-name='show/_person'>
<div>
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<p class="form-control-static">{{fullName}}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Company</label>
<div class="col-sm-10">
<p class="form-control-static">{{company.name}}</p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Tasks</label>
<div class="col-sm-10">
<p class="form-control-static">
{{#each task in tasks}}
{{task.subject}}<br />
{{/each}}
</p>
</div>
</div>
</script>
Запрос GET выдается для компании, связанной с человеком, но никакой запрос не делается для задач. Как я могу получить задания, связанные с человеком или компанией? Я ожидаю, что запрос GET будет сделан на people/3/tasks
или что-то подобное
спасибо, что отлично работает. Тем не менее, мне не нравится, как task_ids необходимо вернуть с помощью модели person. Что делать, если у меня есть тысяча задач, связанных с человеком? Возвращение их всех вместе со своей моделью не будет работать в этом масштабе – David
Добро пожаловать. Я не вижу проблемы с task_ids, потому что это просто массив чисел. Существует другая возможность для загрузки задач, вы можете использовать 'links: {tasks: '/ tasks/1'}' в своей полезной нагрузке, где задачи - это ваше свойство, а «/ tasks/1» - это конечная точка, где эти данные могут быть загружен. Дайте посмотреть в/people/1 mock, этой скрипки http://jsfiddle.net/marciojunior/Bm3Jy/ –
блестящий. 'links' - это то, что я хочу. Спасибо! – David