2015-06-14 2 views
9

Можно ли определить значение по умолчанию в FactoryGirl? Если я определяю завод, как это (где оба question_response belongs_to вопрос):Использование свойства «default» в FactoryGirl, чтобы избежать создания ненужной ассоциации

factory :question_response do 
    question 
    work_history 

    trait :open do 
    question { FactoryGirl.create :question, question_type: 'open' } 
    end 
end 

Когда я FactoryGirl.create :question_response, :open это будет первый вопрос создания по умолчанию, а затем создать другую внутри признака, который является ненужной операцией.

В идеале я хотел бы сделать это:

factory :question_response do 
    work_history 

    trait :default do 
    question { FactoryGirl.create :question, question_type: 'yes_no' } 
    end 

    trait :open do 
    question { FactoryGirl.create :question, question_type: 'open' } 
    end 
end 

а затем делать FactoryGirl.create :question будет использовать признак по умолчанию, но это не представляется возможным.

ответ

2

Когда я FactoryGirl.create: question_response,: открыть сначала создать вопрос по умолчанию, а затем создать еще внутри признака

Это не так. если вы укажете признак с question, он будет перезаписывать заводское поведение перед созданием, чтобы он не создавал вопрос по умолчанию.

Я проверил его с FactoryGirl v4.5.0

+0

Спасибо, вы совершенно правы! Я только что проверил это сам. Интересно, что недавно это было добавлено к фабричной девушке ... –

0

Ваша черта создания 2-й рекорд, потому что у вас есть блок, который создает запись:

trait :open do 
    question { FactoryGirl.create :question, question_type: 'open' } 
end 

Вместо этого, вы можете сделать определить черту на вопрос, который имеет множество типа вопрос, а затем ваш question_response использует этот вопрос с открытым признаком по умолчанию.

factory.define :question do 
    trait :open do 
    question_type 'open' 
    end 
end 

factory.define :question_response do 
    association :question, :open 
end 
Смежные вопросы