2013-04-06 4 views
0

Когда я отлаживал консоль с помощью pry, я запускал short = Factory (: brief,: project => Factory (: project)) эту команду. Он должен работать, но я получил эту ошибку.factorygirl create error

ActiveRecord::RecordNotUnique: PG::Error: ERROR: duplicate key value violates unique constraint "index_briefs_on_project_id" 
    DETAIL: Key (project_id)=(15389) already exists. 
    : INSERT INTO "briefs" ("project_id", "duration", "brand_name", "brand_info", 
"customer_info", "competitor_info", "desired_impression", "competencies", "preferences", 
"examples", "notes", "created_at", "updated_at", "channel_id") VALUES (15389, 14, NULL, 
'brand info', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 
'2013-04-06 01:07:04.717364', '2013-04-06 01:07:04.717364', NULL) RETURNING "id" 

Зачем возникает эта ошибка и как ее исправить?

Отредактировано: Я добавил мои фабричные файлы

brief_factory.rb

Factory.define :brief, :class => Brief do |b| 
    b.brand_info 'brand info' 
    b.duration 14 
end 

project_factory.rb

Factory.define :project, :class => Project do |p| 
    p.association :owner, :factory => :customer 

    p.title 'project title' 
    p.description 'project description' 
    p.stage :brief_completed 
    p.contest_type :standard 

    p.brief Factory.build(:brief) 
    p.association :project_type, :factory => :project_type 
end 
+0

Пожалуйста, добавьте код определения фабрики на вопрос , –

+0

Я добавил файлы фабрики. –

ответ

2

Похоже project завод автоматически создает brief. Таким образом, Factory(:brief,:project => Factory(:project)) попытается создать два сводки, связанных с одним и тем же проектом. Второе не удается, потому что у вас есть уникальное ограничение на столбец project_id в таблице briefs.

С заводов, которые вы определили, вероятно, можно делать то, что вы пытаетесь сделать в Поддеть с:

project = Factory(:project) 
brief = project.brief 

или просто:

brief = Factory(:project).brief