2016-07-25 5 views
7

फैक्टरीगर्ल कारखानों में transient do का उद्देश्य क्या है?फैक्टरीगर्ल कारखानों में 'क्षणिक डू' ब्लॉक का उद्देश्य क्या है?

मैंने कई कारखानों को देखा है जो नीचे की तरह कुछ शुरू करते हैं।

factory :car do 
    owner nil 
    other_attribute nil 
end 
... 

मैं इस ब्लॉग पर कुछ जानकारी मिल गया है: http://blog.thefrontiergroup.com.au/2014/12/using-factorygirl-easily-create-complex-data-sets-rails/

लेकिन मैं अभी भी पूरी तरह से इस कैसे और क्यों ऐसा करने के लिए समझ में नहीं आता। फैक्टरीगर्ल के साथ मेरा अनुभव न्यूनतम है।

फैक्टरीगर्ल का उपयोग करके कुछ अनुभव वाले किसी व्यक्ति को कुछ अंतर्दृष्टि साझा कर सकती है?

+2

आपका उदाहरण 'क्षणिक' का उपयोग नहीं करता है। क्या आपके पास एक कारखाना है जो 'क्षणिक' का उपयोग करता है जिसे आप समझना चाहते हैं? –

उत्तर

20

transient विशेषताएँ आपको उस डेटा में पास करने की अनुमति देती है जो मॉडल पर विशेषता नहीं है।

  • नाम
  • purchase_price
  • मॉडल

आप कार के नाम पर फायदा उठाने में जब आप बनाना चाहते हैं:

आप एक मॉडल कहा जाता car निम्न विशेषताओं वाला है कहो कारखाने में कार मॉडल। हम क्या कर सकते हैं:

factory :car do 
    transient do 
    # capitalize is not an attribute of the car 
    capitalize false 
    end 

    name   { "Jacky" } 
    purchase_price { 1000 } 
    model   { "Honda" } 

    after(:create) do |car, evaluator| 
    car.name.upcase! if evaluator.capitalize 
    end 
end 

इसलिए, जब भी आप कार फैक्ट्री बनाते हैं और आप नाम को पूंजीकृत करना चाहते हैं। आप

car = FactoryGirl.create(:car, capitalize: true) 
car.name 
# => "JACKY" 

उम्मीद है कि यह मदद करता है।

संबंधित मुद्दे