2013-11-08 3 views
2

В приложении Rails я использую FactoryGirl для определения общей фабрики и нескольких более конкретных признаков. Общий случай и все, кроме одного из признаков, имеют определенную связь, но я хотел бы определить черту, в которой эта ассоциация не создается/не строится. Я могу использовать обратный вызов after, чтобы установить id ассоциации в nil, но это не мешает созданию записи ассоциации в первую очередь.Отключение ассоциации FactoryGirl в признаке

Есть ли способ определения определения, чтобы полностью отключить создание/создание ассоциации, которая была определена для фабрики, к которой принадлежит этот признак?

Например:

FactoryGirl.define do 
    factory :foo do 
    attribute "value" 
    association :bar 

    trait :one do 
     # This has the bar association 
    end 

    trait :two do 
     association :bar, turn_off_somehow: true 
     # foos created with trait :two will have bar_id = nil 
     # and an associated bar will never be created 
    end 
    end 
end 
+0

Хм, не уверен, если я понимаю, это правильно. Вы говорите, что хотите запретить Rails от вызова обратных вызовов, которые создают другие связанные экземпляры модели, когда вы создаете экземпляр модели, когда используете FactoryGirl для создания экземпляра модели? –

+0

@ dmtri.com: Я добавил пример, помогает ли это объяснить, что я пытаюсь сделать? – jrdioko

ответ

3

Ассоциация в factory_girl просто атрибут, как и любой другой. Использование association :bar устанавливает атрибут bar, так что вы можете отключить его, перекрывая его nil:

FactoryGirl.define do 
    factory :foo do 
    attribute "value" 
    association :bar 

    trait :one do 
     # This has the bar association 
    end 

    trait :two do 
     bar nil 
    end 
    end 
end 
Смежные вопросы