2013-07-18 7 views

उत्तर

41

जब आप एक मॉडल तैयार करते हैं तो एक मॉडल के रूप में अच्छी तरह से कुछ संबंधित घटकों मिलता है। इस तरह के विषयों समझाने का मेरी पसंदीदा तरीकों में से एक वास्तव में इसे आज़माने या दूसरों यह कोशिश करने के लिए प्रोत्साहित करने के लिए है, इसलिए यदि मैं एक रेल परियोजना के भीतर आदेश rails generate model Foo name:string description:text दर्ज करने के लिए थे, मैं मिलेगा:

invoke active_record 
    create db/migrate/20130719012107_create_foos.rb 
    create app/models/foo.rb 
    invoke test_unit 
    create  test/unit/foo_test.rb 
    create  test/fixtures/foos.yml 

पहले लाइन Active Record को आमंत्रित करती है, जो मूल रूप से आपके मॉडल को आपके डेटाबेस से जोड़ती है। अगली पंक्ति माइग्रेशन फ़ाइल कहलाती है। माइग्रेशन फ़ाइलों में आपके डेटाबेस को बदलने के लिए निर्देश होते हैं। यह पहली माइग्रेशन फ़ाइल 'foos' नामक डेटाबेस तालिका बनाता है और यह "नाम" और "विवरण" के लिए कॉलम भी बनाएगी।

अगली पंक्ति मॉडल ही बनाता है। मॉडल मूल रूप से एक रूबी वर्ग है जो सक्रिय रिकॉर्ड से विरासत में मिलता है। इसका अर्थ यह है कि सक्रिय रिकॉर्ड में किसी भी तरीके को कॉल किया जा सकता है जिसे अब आपके मॉडल में बुलाया जा सकता है। अंतिम तीन पंक्तियां मूल रूप से आपके मॉडल के लिए संबंधित परीक्षण फाइलें बनाती हैं। यदि आप आरएसपीईसी का उपयोग कर रहे थे, तो इसके बजाय spec फाइलें बनाई जाएंगी।

यदि आपका रेल आवेदन केवल मॉडल निहित, आपको लगता है कि एक पृष्ठ पर जानकारी प्रदर्शित करता है देखने के किसी भी प्रकार नहीं है, और न ही आप निर्देश है कि सूचना के प्रवाह को नियंत्रित करना होगा। आपके विकल्प कंट्रोलर भी उत्पन्न करेंगे (जो बदले में आपके विचार उत्पन्न करता है) या एक मचान उत्पन्न करने के लिए, जो आपके मॉडल, विचार, नियंत्रक, और आपके मार्गों को लिखता है। आरबी फ़ाइल। अगर मैं rails generate scaffold foo भाग गया मैं मिलेगा:

invoke active_record 
    create db/migrate/20130719013307_create_foos.rb 
    create app/models/foo.rb 
    invoke test_unit 
    create  test/unit/foo_test.rb 
    create  test/fixtures/foos.yml 
    invoke resource_route 
    route resources :foos 
    invoke scaffold_controller 
    create app/controllers/foos_controller.rb 
    invoke erb 
    create  app/views/foos 
    create  app/views/foos/index.html.erb 
    create  app/views/foos/edit.html.erb 
    create  app/views/foos/show.html.erb 
    create  app/views/foos/new.html.erb 
    create  app/views/foos/_form.html.erb 
    invoke test_unit 
    create  test/functional/foos_controller_test.rb 
    invoke helper 
    create  app/helpers/foos_helper.rb 
    invoke  test_unit 
    create  test/unit/helpers/foos_helper_test.rb 
    invoke assets 
    invoke coffee 
    create  app/assets/javascripts/foos.js.coffee 
    invoke scss 
    create  app/assets/stylesheets/foos.css.scss 
    invoke scss 
identical app/assets/stylesheets/scaffolds.css.scss 

आपके प्रश्न का उत्तर करने के लिए, पाड़ के लाभ यह है कि यह त्वरित, आसान है, और सब कुछ आप के लिए पहले से कॉन्फ़िगर किया गया है। हालांकि, मचानों के स्वतंत्र रूप से मॉडलों को उत्पन्न करने के फायदे (और फिर बदले में नियंत्रकों/विचारों को उत्पन्न करने और जहां आपके मार्गों को लिखना। आरबी फ़ाइल स्वयं) यह है कि आपके ऐप पर बहुत अधिक नियंत्रण है और यह कैसा दिखता है और कार्य करता है, आप इससे बचते हैं अनावश्यक कोड, आप व्यवहार-प्रेरित विकास या टेस्ट संचालित विकास, और शायद अन्य चीजें जो किसी और को जोड़ना चाहते हैं, को नियोजित कर सकते हैं।

मेरी सलाह के अंतिम बिट है: रेल बहुत उपयोगकर्ता के अनुकूल है, इसलिए अपने आप को प्रयोग करने का प्रयास करें। तुम्हें पता है, एक इसी destroy आदेश के साथ किसी भी generate आदेश पूर्ववत कर सकते हैं तो उदाहरण rails destroy scaffold Foo के लिए सभी rails generate Scaffold Foo name:string description:string द्वारा उत्पन्न फ़ाइलों को हटाने के हैं, तो आप के बारे में चिंता करने की पूरी तरह प्रयोग करके एक परियोजना को खिलवाड़ नहीं है।

+0

मैं भी प्रोत्साहित करना चाहिए इन विषयों पर आप किसी भी आधिकारिक रेल गाइड को पढ़ने के लिए उम्र ... मैंने सक्रिय रिकॉर्ड और माइग्रेशन जैसी चीजों का एक सुंदर उच्च स्तरीय अवलोकन प्रदान किया, लेकिन उम्मीद है कि आपके प्रश्न का उत्तर देने के लिए पर्याप्त एक है! – aceofbassgreg

+0

अद्भुत उत्तर आपको बहुत धन्यवाद, आपने मुझे बहुत मदद की – SsouLlesS

+0

मेरे पास एक ही सवाल था। महान स्पष्टीकरण। धन्यवाद। – whitehat

4

एक पाड़ जनरेट कर रहा है भी शामिल है एक मॉडल पैदा करने पर भी

  • RESTful मार्गों
  • मॉडल की RESTful हैंडलिंग
  • विचारों नियंत्रक द्वारा आवश्यक
  • परीक्षण स्टब्स
  • के लिए सभी कार्यों के साथ एक नियंत्रक उत्पन्न करता है

मचान नई रेल उपयोगकर्ताओं के लिए एक अच्छी शुरुआत है।

0

नए उपयोगकर्ताओं को शायद मचान द्वारा भ्रमित किया जाएगा क्योंकि वे समझ नहीं पाएंगे कि सभी घटक एक साथ कैसे काम करते हैं। मचान शायद अनुभवी उपयोगकर्ताओं के लिए सबसे अच्छा है जो काम के लिए शॉर्टकट चाहते हैं, वे आम तौर पर दोहराना चाहते हैं।

0
साथ

$rails generate scaffold <name> 

आप स्वत: उत्पन्न कर सकते हैं एक पूर्ण CRUD (बनाएँ, पढ़ने, अपडेट, हटाएँ) वेब इंटरफेस के साथ नियंत्रक, मॉडल, और दृश्यों का उपयोग करने के लिए तैयार

। मॉडलों को उत्पन्न करने से यह आसान और आसान तरीका है, लेकिन जो कोड उत्पन्न करता है वह आपके आवेदन के लिए एकदम सही नहीं है।

scaffold सरल उदाहरणों, त्वरित नकली या परीक्षण की बात करते समय उपयोग करने के लिए उत्कृष्ट है।

आप अपना मन बदल और पहले से ही मॉडल पैदा करने के बाद पाड़ उपयोग करने का निर्णय, तो आप हमेशा चला सकते हैं

$rails generate scaffold <name> 

यह सब गायब फ़ाइल पैदा करेगा। या यदि आप पाड़ उपयोग करने के साथ OT खुश हैं, तो आप हमेशा यह निम्नलिखित तरीके से निकाल सकते हैं:

उत्पन्न पाड़:

$rails generate scaffold Story 

आप अपनी फ़ाइलों को चले गए हैं, तो प्रदर्शन एक रोलबैक:

$rake db:rollback 

नष्ट या पूर्ववत पाड़: $ रेल पाड़ कहानी को नष्ट

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