2015-02-18 17 views
5

पर आधारित फैक्टरीगर्ल के सशर्त व्यवहार को कैसे प्राप्त करूं, मेरे पास उपयोगकर्ता के लिए एक कारखाना है। मैं चाहता हूं कि उपयोगकर्ताओं को डिफ़ॉल्ट रूप से पुष्टि की जाए। लेकिन एक विशेषता unconfirmed दिया, मैं नहीं चाहता कि उन्हें पुष्टि की जाए।मैं

जबकि मेरे पास एक कार्यान्वयन कार्यान्वयन है, जो कार्यान्वयन के विवरण पर आधारित है, अबास्ट्रक्शन के बजाय, मैं जानना चाहता हूं कि यह ठीक से कैसे करें।

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 

मैं इन पंक्तियों के साथ कुछ सोच रहा हूं। लेकिन इस काम करते हैं और एक अपरिभाषित विधि `अपुष्ट '

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 

उत्तर

7

आप लगभग वहाँ थे पैदावार नहीं होती है:

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। ऐसा किया – branch14