जब मॉडल पहले से मौजूद है तो `रेल्स मचान` कैसे चलाएं?


331

मैं रेल के लिए नया हूं इसलिए मेरा वर्तमान प्रोजेक्ट एक अजीब स्थिति में है।

मेरे द्वारा बनाई गई पहली चीजों में से एक "मूवी" मॉडल थी। मैंने तब इसे और अधिक विस्तार से परिभाषित करना शुरू किया, कुछ तरीके जोड़े, आदि।

मुझे अब एहसास हुआ कि मुझे rails generate scaffoldरूटिंग, विचार, नियंत्रक आदि जैसी चीजों को हुक करने के लिए इसे उत्पन्न करना चाहिए था ।

मैंने मचान बनाने की कोशिश की, लेकिन मुझे एक त्रुटि मिली जो कह रही है कि माइग्रेशन फ़ाइल उसी नाम से है जो पहले से मौजूद है।

अब मेरी "मूवी" के लिए मचान बनाने का सबसे अच्छा तरीका क्या है? (रेल का उपयोग करके 3)


1
शायद अपने स्वयं के नियंत्रकों और विचारों और मार्गों को लिखना सबसे अच्छा है। आप अवधारणाओं के बारे में अधिक जानेंगे
बेन ऑबिन

1
@ Penn12 से सहमत हैं। कम से कम शुरुआत में, जब तक आप अवधारणाओं के साथ सहज नहीं होते हैं, ताकि आपको पता चल जाए कि सभी कोड क्या कर रहे हैं जो आपके लिए उत्पन्न होता है।
mydoghasworms

सीधे प्रासंगिक नहीं, लेकिन अगर आप कभी गड़बड़ करते हैं, तो रेल को नष्ट करें <आदि> का उपयोग करें। मुझे याद है कि जब मैंने शुरुआत की थी तब यह वास्तव में उपयोगी था।
हेलसिंग

1
@BenAubin, सच है, रेल की सुंदरता को लगातार बॉयलर लिखना नहीं है।
रोमुलॉक्स

जवाबों:


596

TL; DR :rails g scaffold_controller <name>

भले ही आपके पास पहले से ही एक मॉडल है, फिर भी आप rails generateविकल्प का उपयोग करके आवश्यक नियंत्रक और माइग्रेशन फ़ाइलों को उत्पन्न कर सकते हैं । यदि आप चलाते हैं rails generate -hतो आप अपने पास उपलब्ध सभी विकल्पों को देख सकते हैं।

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

यदि आप अपने मॉडल के लिए एक नियंत्रक पाड़ उत्पन्न करना चाहते हैं, तो देखें scaffold_controller। स्पष्टता के लिए, यहाँ उस पर विवरण दिया गया है:

स्टब्स एक मचान नियंत्रक और उसके विचार। मॉडल का नाम, या तो CamelCased या under_scored, और तर्क के रूप में विचारों की एक सूची। नियंत्रक नाम को मॉडल नाम के बहुवचन संस्करण के रूप में पुनर्प्राप्त किया जाता है।

किसी मॉड्यूल के भीतर एक नियंत्रक बनाने के लिए, मॉडल नाम को 'parent_module / कंट्रोलर_नाम' जैसे पथ के रूप में निर्दिष्ट करें।

यह एप्लिकेशन / नियंत्रकों में एक नियंत्रक वर्ग उत्पन्न करता है और हेल्पर, टेम्प्लेट इंजन और टेस्ट फ्रेमवर्क जनरेट करता है।

अपना संसाधन बनाने के लिए, आप resourceजनरेटर का उपयोग करेंगे , और माइग्रेशन बनाने के लिए, आप migrationजनरेटर को भी देख सकते हैं (देखें, इस पागलपन के सभी के लिए एक पैटर्न है)। ये संसाधन बनाने के लिए लापता फ़ाइलों को बनाने के लिए विकल्प प्रदान करते हैं। वैकल्पिक रूप से आप केवल मौजूद किसी भी फाइल को छोड़ने rails generate scaffoldके --skipविकल्प के साथ चल सकते हैं :)

मैं कुछ समय जनरेटर के अंदर के विकल्पों को देखने में खर्च करने की सलाह देता हूं। वे कुछ ऐसा है जो मुझे नहीं लगता कि पुस्तकों और इस तरह से बहुत अच्छी तरह से प्रलेखित हैं, लेकिन वे बहुत काम आते हैं।


12
वाह, एक सबसे अच्छा जवाब मैं कभी भी एक प्रोग्रामिंग प्रश्न के लिए मिल गया है। धन्यवाद!
Lan

12
मेरे पास मौजूदा मॉडल भी हैं और करने rails generate scaffold_controller MyModelसे दृश्य परत उत्पन्न होती है, लेकिन इसमें मॉडल विशेषताएँ (तालिका स्तंभ) शामिल नहीं होती हैं और आपको उन्हें हाथ से जोड़ना होगा। किसी को भी इसके लिए एक तय का पता है? मैं रेल 3.2.8 पर हूं।
अरोनबार्टेल

@ARonbartell आप रेल को एक 'scaffold_controller' उत्पन्न करने के लिए कह रहे हैं जो मॉडल विशेषताओं के बारे में परवाह नहीं करता है। यह टूटा हुआ नहीं है, अगर आप एक मॉडल भी जेनरेट करना चाहते हैं तो आप चाहते हैं generate scaffoldकि आपके पास एक मॉडल हो लेकिन आप एक स्कैफोल्ड कंट्रोलर चाहते हैं और एक मॉडल जो आप चाहते हैं scaffold_generatorउसके migrationसाथ नए फीचर्स जोड़े जा रहे हैं, जिन्हें आप बदल रहे हैं
ली जार्विस

9
@Lee - नहीं aaronbartell पूछ रही है कि कैसे scaffold_controller मॉडल के मौजूदा गुणों के लिए संबंधित दृश्य इनपुट उत्पन्न नहीं करता है जो इसे पारित किया गया था, जो कि एक वैध प्रश्न है ... stackoverflow.com/q/1715386464/165673
यारिन

67

द्वारा महान जवाब Lee Jarvis, यह सिर्फ आदेश है जैसे; हमारे पास पहले से ही उपयोगकर्ता नाम का एक मौजूदा मॉडल है:

rails g scaffold_controller User

10
पाठ के पैराग्राफ पढ़ने के लिए हम में से बहुत आलसी लोगों के लिए धन्यवाद!
क्रिस क्रेफ़िस

30

मौजूदा डेटाबेस के साथ एक रेल ऐप शुरू करने वालों के लिए एक मस्त मणि है जिसे schema_to_scaffoldमचान स्क्रिप्ट उत्पन्न करने के लिए कहा जाता है। यह आउटपुट:

rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

आपके schema.rbहमारे नाम से, इसकी schema.rb. जाँच करें


2
यह एक महान लिट्ल रत्न है, यह मुझे बहुत मदद करेगा! बिल्ट-इन रेल होना चाहिए!
पीटर एंडर्सन

13

में रेल 5 , आप अभी भी चला सकते हैं

$rails generate scaffold movie --skip

सभी लापता पाड़ फाइल बनाने के लिए या

rails generate scaffold_controller Movie

नियंत्रक बनाने के लिए और केवल देखने के लिए।

एक बेहतर स्पष्टीकरण के लिए चेक आउट स्कैफोल्ड



10

आप मॉडल का scaffold_controllerपास करने के लिए उपयोग कर सकते हैं और याद रख सकते हैं attributes, या विशेषताओं के बिना मचान उत्पन्न किया जाएगा।

rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string

यह कमांड निम्नलिखित फाइलें उत्पन्न करेगी:

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.