2012-07-28 6 views
40

जब Gemfile में आपके देव और परीक्षण ब्लॉक में factory_girl_rails मणि शामिल है, तो आपके मॉडल उत्पन्न होने पर रेल स्वचालित रूप से कारखानों को उत्पन्न करेंगे।फैक्टरीगर्ल आपके मॉडल के निर्माण के बाद कारखानों को उत्पन्न कर सकता है?

क्या आपके मॉडल उत्पन्न होने के बाद कारखानों को उत्पन्न करने का कोई तरीका है?


Eduardo Santana's ANSWER SHOULD BE CORRECT

+0

वास्तव में क्या आप "सृजन" के साथ मतलब है के लिए एक मणि है? आपको उन्हें स्पष्ट रूप से परिभाषित करना और कॉल करना होगा। – iltempo

+0

@iltempo - मेरा मतलब है जब आप "factory_girl_rails" का उपयोग मणि, जब आप के रूप में आदेश के माध्यम से अपने मॉडल उत्पन्न "रेल जी मॉडल उपयोगकर्ता first_name: स्ट्रिंग" ... आदि इस मॉडल के लिए कारखानों स्वत: जनरेट बस के रूप में एक दृढ़ है परीक्षण के लिए। मैं सोच रहा था कि मॉडल बनने के बाद जनरेटर हुक का उपयोग करने का कोई तरीका था या नहीं। – GuiDoody

उत्तर

18

--fixture-replacement विकल्प आपको रेल क्या परीक्षण डाटा के निर्माण के लिए उत्पन्न करने के लिए बता दूँगी। आप अपने config/application.rb फ़ाइल में एक डिफ़ॉल्ट के रूप में इस सेट कर सकते हैं, तो जैसे:

config.generators do |g| 
    g.fixture_replacement :factory_girl 
end 
+0

यह चाल है! यह आश्चर्यजनक है कि आप जब तुम सिर्फ प्रलेखन के माध्यम से पढ़ने मिलेगा। :) – GuiDoody

+15

यह सवाल का जवाब कैसे देता है? मॉडलों के निर्माण के बाद कारखानों को कैसे उत्पन्न किया जाता है? – Emil

+1

नीचे उपयोगकर्ता 2040729 से उत्तर देखें। –

121

पहली बात, स्रोत परियोजना को देखो पता लगाने के लिए कि यह कैसे लागू किया गया था:

https://github.com/thoughtbot/factory_girl_rails/blob/master/lib/generators/factory_girl/model/model_generator.rb

उसके बाद, लगता है कि यह कैसे काम करता है की कोशिश:

rails g factory_girl:model Car name speed:integer 

परिणाम है:

create test/factories/cars.rb 

और सामग्री:

# Read about factories at https://github.com/thoughtbot/factory_girl 

FactoryGirl.define do 
    factory :car do 
    name "MyString" 
    speed 1 
    end 
end 

याद रखें, जब आप का उपयोग रेल जी, आप हमेशा यह पूर्ववत कर सकते हैं, पटरियों के साथ d

rails d factory_girl:model Car name speed:integer 
+8

यह सही उत्तर होना चाहिए, क्योंकि यह पहले से बनाए गए मॉडल के लिए कारखानों को उत्पन्न करने के बारे में विशिष्ट प्रश्न का उत्तर देता है। सामान्य परिदृश्य फैक्ट्रीगर्ल –

+1

का उपयोग करने के लिए डिफ़ॉल्ट फिक्स्चर के साथ मौजूदा रेल ऐप को स्विच कर रहा है, आपको यह अनुमान लगाने की भी आवश्यकता नहीं है कि यह कैसे काम करता है, रेल g कारखाने_girl: मॉडल --help आपको बताएगा कि कैसे। –

+0

मेरे मॉडल को 'कार' भी कहा जाता है! हाँ!!! –

2

यह एक जवाब नहीं है, लेकिन जब से मैं टिप्पणी नहीं कर सकता अभी तक: मुझे लगता है कि आप अपनी समस्या का हिस्सा हल करने के लिए इसका उपयोग कर सकते हैं। आप factory_girl उत्पन्न करने के लिए schema_to_scaffold नामक एक मणि का उपयोग कर सकते हैं: मॉडल कमांड स्ट्रिंग। यह आउटपुट:

रेल उत्पन्न factory_girl: मॉडल उपयोगकर्ताओं fName: स्ट्रिंग lname: स्ट्रिंग bdate: तिथि ईमेल: स्ट्रिंग encrypted_password: स्ट्रिंग

अपने schema.rb या अपने नाम दिया schema.rb से।

चेक here या here

0

यहाँ कुछ अच्छी जवाब है, लेकिन एक और विकल्प stepford उपयोग करने के लिए है। ऐसी कुछ परियोजनाओं के लिए जो विदेशी कुंजी बाधाओं वाले स्कीमा का उपयोग करते हैं, गहरी_ * विधियां इत्यादि मदद कर सकती हैं, और यह कमांड लाइन के माध्यम से कारखानों को उत्पन्न करने का एक आसान तरीका है।

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