2015-02-18 13 views
5

Mam fabrykę dla użytkownika. Chcę, aby użytkownicy byli domyślnie potwierdzani. Ale biorąc pod uwagę cechę unconfirmed, nie chcę ich potwierdzić.Jak uzyskać zachowanie warunkowe FactoryGirl na podstawie cech

Chociaż mam działającą implementację, która opiera się na szczegółach implementacji, a nie na abstrakcji, chciałbym wiedzieć, jak to zrobić właściwie.

factory :user do 
    after(:create) do |user, evaluator| 
    # unwanted implementation details here 
    unless FactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed) 
     user.confirm! 
    end 
    end 
    trait :unconfirmed do 
    end 
end 

Myślę o czymś takim. Ale to nie działa i daje się niezdefiniowanej metody `niepotwierdzone”

factory :user do 
    ignore do 
    unconfirmed = false 
    end 

    after(:create) do |user, evaluator| 
    user.confirm! unless evaluator.unconfirmed 
    end 

    trait :unconfirmed do 
    unconfirmed = true 
    end 
end 

Odpowiedz

7

Byłaś prawie tam:

factory :user do 
    transient do 
    unconfirmed false 
    end 

    trait :unconfirmed do 
    unconfirmed true 
    end 

    after(:create) do |user, evaluator| 
    user.confirm! unless evaluator.unconfirmed 
    end 
end 
+0

thx. to zrobiło. – branch14

Powiązane problemy