2016-09-30 5 views
0

燃えさし-CLI-蜃気楼内staffMemberのインスタンスを生成するが、私は「タスク」を作成し、キーに割り当てしようとしていますが「tasksCreated」内の特定のキーにそれを適用しますstaffMemberモデル内。私の現在のコードは以下の通りです。トラブルモデルインスタンスを生成し、エンバーミラージュ

これは、タスクを作成し、staffMemberを作成するが、2つは、それらの間に構築された何の関係を持っていないです。

アプリ/モデル/スタッフ-member.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    atWork: DS.attr('boolean'), 
    avatar: DS.attr(), 
    tasksCreated: DS.hasMany('task', { 
     inverse: 'creator' 
    }), 
    tasksAssigned: DS.hasMany('task', { 
     inverse: 'assignee' 
    }) 
}); 

アプリ/モデル/ tasks.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    creator: DS.belongsTo('staff-member', { inverse: null }), 
    assignee: DS.belongsTo('staff-member', { inverse: null }), 
    creationDate: DS.attr(), 
    description: DS.attr('string'), 
    urgency: DS.attr() 
}); 

蜃気楼/モデル/スタッフ-member.js

import {Model, hasMany} from 'ember-cli-mirage'; 

export default Model.extend({ 
    tasksCreated: hasMany('task'), 
    tasksAssigned: hasMany('task', { inverse: 'assignee'}) 
}); 

蜃気楼/モデル/ task.js

import {Model, belongsTo} from 'ember-cli-mirage'; 

export default Model.extend({ 
    creator: belongsTo('staff-member'), 
    assignee: belongsTo('staff-member') 
}); 

蜃気楼/工場/スタッフ-member.js

import { Factory, faker, trait } from 'ember-cli-mirage'; 

export default Factory.extend({ 
    name: faker.name.firstName, 
    atWork: faker.random.boolean, 
    avatar: faker.image.avatar, 
    withTasks: trait({ 
     afterCreate(staffMember, server){ 
      server.createList('task',2,{tasksCreated: [staffMember]}); 
     } 
    }) 
}); 

蜃気楼/工場/ task.js

import { Factory, faker } from 'ember-cli-mirage'; 

export default Factory.extend({ 
    creationDate: faker.date.recent, 
    description: faker.lorem.sentence, 
    urgency: faker.random.number({ 
     'min': 0, 
     'max': 4 
    }) 
}); 

蜃気楼/シナリオは/私がしようとした

export default function(server) { 

    server.createList('staff-member', 4, 'withTasks'); 

} 

答えて

0

にDefault.js関係を設定することに直接関係していないコードのほとんどを削除します。ファクトリーを操作する前に、デフォルトシナリオだけでリレーションシップを働かせてください。

私は作業がここにひねり加えました:限り、あなたの工場afterCreateコードが行くように、1つのエラーは、この行に

ある

export default function(server) { 

    let member1 = server.create('staff-member'); 
    server.createList('task', 2, { creator: member1 }); 
    server.create('task', { assignee: member1 }); 


    let member2 = server.create('staff-member'); 
    server.create('task', { creator: member2 }); 
    server.createList('task', 3, { assignee: member2 }); 
} 

https://ember-twiddle.com/5bcdcdee50faa0c0a679c3c4d35fe0ea?openFiles=mirage.scenarios.default.js%2C

は、ここでデフォルトのシナリオは次のようになります。

server.createList('task',2,{tasksCreated: [staffMember]}); 

taskを作成していますが、そのタスクのプロパティとしてtasksCreatedを渡しています。しかし、tasksにはtasksCreatedプロパティがありません。staffMembersはそれを行います。おそらくこのようなものがあなたが探しているものです:

server.createList('task', 2, { creator: staffMember }); 
関連する問題