एक मॉडल को रेल में हटाना ("रेल जी मॉडल का शीर्षक ...")


115
rails g model Rating user_id:integer message:string value:integer

मैं इस मॉडल को पूरी तरह से कैसे निकाल सकता हूं? धन्यवाद


5
नीचे मिखाइल का शीर्ष उत्तर अंतिम प्रवास में बनाए गए मॉडल पर लागू होता है। जो लोग कुछ समय के लिए एक मॉडल और उसकी तालिका को निकालना चाहते हैं, यह धागा वास्तव में बताता है कि क्या करना है।
निंजाकन्नन

जवाबों:


192
bundle exec rake db:rollback    
rails destroy model <model_name>

जब आप कोई मॉडल बनाते हैं, तो यह एक डेटाबेस माइग्रेशन बनाता है। यदि आप उस मॉडल पर 'नष्ट' चलाते हैं, तो यह माइग्रेशन फ़ाइल को हटा देगा, लेकिन डेटाबेस तालिका को नहीं। तो दौड़ने से पहले

bundle exec rake db:rollback

:( पहली पंक्ति पढ़ें और यह किया। यह मेरी गलती थी, लेकिन एक सही ढंग से दिए गए उत्तर ने मदद की हो सकती है।
माइक टी।

4
यदि यह विकास है और आप अपने डेटा को चलाने से नहीं डरते हैं तो आप चला सकते हैं bundle exec rake db:drop db:create db:migrate। यह एक नया खाली डेटाबेस होगा।
मिखाइल निकलीलुकिन

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

6
@ माइक आप क्या? कचरे से माइग्रेशन बहाल किया? आप किसी VCS का उपयोग नहीं करते हैं? o_O आपको बिलकुल चाहिए!
प्लुनेटिक iam

मेरे लिए काम किया है, लेकिन मुझे भी मार्गों में जाना था। आरबी और "devise_for: MODEL" को हटा दें
cormacncheese

54

इसे इस्तेमाल करे

rails destroy model Rating

यह मॉडल, माइग्रेशन, परीक्षण और जुड़नार को हटा देगा


5
यह सभी को हटा देता है, लेकिन यह डाउनग्रेड माइग्रेशन या कुछ और नहीं बनाता है।
mr.The

28

भविष्य के प्रश्नकर्ताओं के लिए: यदि आप कंसोल से तालिकाओं को नहीं गिरा सकते हैं, तो एक माइग्रेशन बनाने का प्रयास करें जो आपके लिए तालिकाओं को गिरा दे। आपको एक माइग्रेशन बनाना चाहिए और फिर फ़ाइल नोट तालिकाओं में जिसे आप इस तरह से छोड़ना चाहते हैं:

class DropTables < ActiveRecord::Migration
  def up
    drop_table :table_you_dont_want
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

महान जवाब, एक capistrano की तैनाती के साथ उम्मीद के अनुसार व्यवहार करेंगे।
सबक्यूसर

18
  1. माइग्रेशन निकालने के लिए (यदि आप पहले से माइग्रेट माइग्रेट कर चुके हैं)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. मॉडल को हटाने के लिए

    rails d model name  #name => Your model name

rails d modelवह है जो मैं अपने को उलटने के लिए देख रहा हूं rails g model
कोमसुन के।

3

यहां जेनी लैंग के जवाब का एक अलग कार्यान्वयन है जो रेल 5 के लिए काम करता है।

पहले माइग्रेशन फ़ाइल बनाएँ:

bundle exec be rails g migration DropEpisodes

फिर माइग्रेशन फ़ाइल को निम्नानुसार आबाद करें:

class DropEpisodes < ActiveRecord::Migration[5.1]
  def change
    drop_table :episodes
  end
end

दौड़ने rails db:migrateसे टेबल गिर जाएगी। यदि आप चलाते हैं rails db:rollback, तो रेल एक ActiveRecord::IrreversibleMigrationत्रुटि फेंक देंगे ।


यह एक उपयोगी उत्तर है - लेकिन कमांड मेरे लिए काम नहीं करता है। मैंने इस्तेमाल किया: बंडल एग्ज़ाम्पल रेल्स माइग्रेशन ड्रॉपएपिसोड्स उत्पन्न करते हैं और फिर मैं नीचे दिए गए मॉडल विलोपन कोड का भी उपयोग करूंगा।
एंड्रयू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.