Один из вариантов: фабрика bar
создаст свой собственный baz
:
// factories/bar.js
export default Factory.extend({
afterCreate(bar, server) {
bar.update({
baz: server.create('baz')
})
}
})
Таким образом, каждый раз, когда вызывается server.create('bar')
(независимо от того, где), каждый столбец получит обновленный со своим собственным baz
.
Вы можете даже использовать помощник по ассоциации , чтобы сделать это за вас - он в основном заботится об этом особом случае создания отношения belongsTo
всякий раз, когда базовая модель создана:
import { Factory, association } from 'ember-cli-mirage';
// factories/bar.js
export default Factory.extend({
baz: association()
})
Вы также можете сделать это непосредственно с фабрики foo
:
// factories/foo.js
afterCreate(foo, server) {
server.createList('bar', 10, { foo }).forEach(bar => {
bar.update({
baz: server.create('baz')
})
});
}
Просто обратите внимание, что базовые фабрики должны быть минимальными действительными описаниями ваших моделей. + их отношения - если вы поместите эти автоматически создаваемые отношения в каждую базовую фабрику, а затем кто-то захочет написать тест для ситуации, когда эти отношения не существуют , им будет трудно. функция черт разработана специально для облегчения такого рода вещей:
// factories/bar.js
Factory.extend({
withBaz: trait({
baz: association()
})
})
// factories/foo.js
Factory.extend({
afterCreate(foo, server) {
server.createList('bar', 10, 'withBaz', { foo });
}
})
Также обязательно прочитайте руководство по заводской практике ! :)