'रेल जनरेट' को कैसे रिवर्स करें


471

मैं इसके द्वारा बनाई गई सभी फ़ाइलों को हटाना चाहता हूं और किए गए किसी भी परिवर्तन को वापस करना चाहता हूं, लेकिन जरूरी नहीं कि डेटाबेस के लिए हो, लेकिन कॉन्फिग फाइलों के लिए अधिक।

मैं स्वचालित रूप से सभी संसाधन मैपिंग को मॉडल / नियंत्रक के लिए मार्गों में हटा देना चाहूँगा।

जवाबों:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

रेल 3.2 dकमांड में एक नया शॉर्टकट जोड़ता है , इसलिए अब आप लिख सकते हैं:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
Btw, मैं एक पाड़ को हटाने के लिए इस आदेश का उपयोग कैसे करूं? मॉडल और नियंत्रक ठीक काम करते हैं ... लेकिन मैं पूरी तरह से एक मचान कैसे उलट सकता हूं?
6

6
ठीक है, मैंने पता लगा लिया। शायद मैं कुछ गलत समझ रहा था। मैं बस भागा rails destroy scaffold lalalalऔर वह काम किया।
मार्केमिलिन

38
@marcam बिलियन का अतिरिक्त 'L' रहा होगा।
वारिस

1
एक मणि के साथ जुड़े फ़ाइलों को हटाने के बारे में क्या इस तरह के रूप स्थापितrails generate <gemname>:install
डौग

2
@doug, मुझे नहीं लगता कि यह संभव है। आपकी सबसे अच्छी शर्त है कि आप जनरेटर के -fझंडे के साथ फिर से फ़ाइलों को फिर से बनाने / फिर से भेजने के लिए बाध्य करें ... फिर आप देख सकते हैं कि यह कौन सी फाइलें बनाई / बदल गई हैं, और मैन्युअल रूप से उन्हें हटाने पर आगे बढ़ें।
फैबियो बतिस्ता

49

यह -pयहां ध्वज का उल्लेख करने योग्य है ( नाटक के लिए "पी" )।

यदि आप इसे कमांड में जोड़ते हैं तो यह बस एक "परीक्षण" रन करेगा और आपको दिखाएगा कि वास्तव में उन्हें हटाने के बिना क्या फाइलें हटा दी जाएंगी।

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

यदि आप इससे खुश हैं, तो बिना -pध्वज के फिर से कमांड चलाएं ।


मुझे लगता है कि यह सबसे अच्छा जवाब है
एमिल रेना एनरिकेज़

24

rails destroy controller Controller_nameत्रुटियों का एक गुच्छा लौटा रहा था। नियंत्रक को नष्ट करने में सक्षम होने के लिए मुझे मार्गों में संबंधित मार्गों को हटाना पड़ा। PS मैं रेल का उपयोग कर रहा हूँ 3.1


जब तक आप इस उत्तर को चयनित सही उत्तर नहीं देना चाहते, कृपया अपने कार्यों को संक्षेप में प्रस्तुत न करें।
टीन मैन

11

यह एक नियंत्रक या मॉडल को बनाने या नष्ट करने के लिए एक आदर्श है रेल:

rails generate/destroy controller/model [controller/model Name]

उदाहरण के लिए, यदि आपको उपयोगकर्ता नियंत्रक बनाने की आवश्यकता है:

rails generate controller User

या

rails g controller User

यदि आप उपयोक्ता नियंत्रक को नष्ट करना चाहते हैं या उपरोक्त कार्रवाई के लिए वापस लौटना चाहते हैं तो उपयोग करें:

rails destroy controller User

या:

rails d controller User

यहाँ छवि विवरण दर्ज करें


4

आप कमांड rails d model/controller/migration ...का उपयोग करके उत्पन्न परिवर्तनों को नष्ट या हटाने के लिए उपयोग कर सकते हैं rails generate

उदाहरण के लिए:

rails g model Home name:string

homeविशेषता के साथ एक मॉडल बनाता है name। उस आदेश से उत्पन्न फ़ाइलों और कोड को निकालने के लिए हम उपयोग कर सकते हैं

rails d model Home

3

आप उन सभी चीज़ों को नष्ट कर सकते हैं जो उसी तरह बनाई गई थीं, केवल छोटी सी चीज को बदलने के अलावा। नियंत्रक के लिए,

rails d controller_name (d stands for destroy)

मॉडल के लिए

rails d model_name

आप सिर्फ अपने प्रवास के d(destroy)बजाय डाल दिया g(generate)


3

यदि आप मैन्युअल रूप से नियंत्रक को हटाना पसंद करते हैं:

नियंत्रक के लिए welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

आप अपने को वापस ला सकते हैं

rails g/generate controller/model/migration xxx

उत्पादन का उपयोग करके:

 rails d/destroy controller/model/migration xxx

3

मान लीजिए कि मैंने "नमूना" नामक एक नियंत्रक बनाया है जैसे:

rails generate controller sample

मैं इस नियंत्रक को नष्ट किया है, तो सब मैं क्या करना है स्वैप है generateके साथ destroy, के रूप में

rails destroy controller sample.

यदि आप पीढ़ी को उलटना चाहते हैं, तो आपको बस इतना करना है कि आप स्वैप generateकरें destroy


3

यदि आप रेल का उपयोग करते हैं, तो उपयोग करें rails d controller Users

और, यदि आप ज़ीउस का उपयोग करते हैं, तो उपयोग करें zeus d controller Users

दूसरी ओर, यदि आप git या SVN का उपयोग कर रहे हैं, तो कमिट संख्या के साथ अपने परिवर्तनों को वापस लाएं। यह बहुत तेज है।


3

आप rails generateनिम्नलिखित तरीकों से इसे पूर्ववत कर सकते हैं:

  • मॉडल के लिए: rails destroy MODEL
  • नियंत्रक के लिए: rails destroy controller_name

1

इसे उलटने के लिए, हम इसे नष्ट कर देते हैं। टर्मिनल एप्लिकेशन खोलें और प्रोजेक्ट डायरेक्टरी पर जाएं, फिर इसे टाइप करें:

rails destroy model CamelCase
rails destroy controller CamelCase

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


0

हम उत्पन्न का उपयोग करें rails generate app। इसलिए किसी भी generateबयान को पुनर्जीवित करके destroyबयान का उपयोग करके उलटा किया जा सकता है । बस की जगह generateके साथ destroy यानी rails generate appलिखा जा सकता है के रूप में rails destroy app' रेल उत्पन्न ____ asरेल नष्ट ____ `



0

के पुनर्मिलन से पहले rails generate, कृपया सुनिश्चित करें कि आपने पहले माइग्रेशन को रोलबैक किया है

केस 1: यदि आप मचान वापस करना चाहते हैं तो इस कमांड को चलाएं:

rails destroy scaffold MODEL_NAME

केस 2: यदि आप मॉडल को वापस लाना चाहते हैं तो इस कमांड को चलाएं:

rails destroy model MODEL_NAME

केस 3: यदि आप नियंत्रक को वापस करना चाहते हैं तो इस कमांड को चलाएं:

rails destroy controller CONTROLLER_NAME

नोट: आप dइसके बजाय शॉर्टकट का भी उपयोग कर सकते हैं destroy



0

रेल के सभी संस्करणों में "नष्ट" होता है, इसलिए, यदि आप (उदाहरण के लिए) एक जनरेटर का उपयोग करके "कार्यों" नाम का पाड़ बनाते हैं, तो उस उत्पन्न कदम के सभी परिवर्तनों को नष्ट करने के लिए आपको टाइप करना होगा:

rails destroy scaffold Tasks

आशा है कि यह आपकी मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.