2016-08-02 10 views
7

मैं अपनी स्कीमा में एक टेबल को हटाना चाहता हूं। मैंने डेटाबेस बनाया जब मैंने पहली बार प्रोजेक्ट शुरू किया और तालिका को हटाना चाहता था। ऐसा करने का सबसे अच्छा तरीका क्या है?स्कीमा से तालिका हटाना - रेल

मैंने rails g migration drop table :installs की कोशिश की लेकिन यह सिर्फ खाली माइग्रेशन बनाता है?

स्कीमा:

create_table "installs", force: :cascade do |t| 
    t.string "email",     default: "", null: false 
    t.string "encrypted_password",  default: "", null: false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",   default: 0, null: false 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
    t.datetime "created_at",       null: false 
    t.datetime "updated_at",       null: false 
    end 

add_index "installs", ["email"], name: "index_installs_on_email", unique: true 
add_index "installs", ["reset_password_token"], name: "index_installs_on_reset_password_token", unique: true 
+2

संभावित रेल डुप्लिकेट [रेल डीबी माइग्रेशन - टेबल कैसे छोड़ें?] (Http://stackoverflow.com/questions/4020131/rails-db- माइग्रेशन-how-to-drop-a-table) –

+0

मैं ' डी कहते हैं कि यह काफी डुप्लिकेट नहीं है कि यह स्कीमा के बारे में एक सवाल है (भले ही वह संपादित नहीं किया जाना चाहिए)। – jonlink

उत्तर

21

आप चलाकर एक खाली प्रवास बनाते हैं:
rails g migration DropInstalls
या:
rails generate migration DropInstalls

फिर आप इस है कि खाली में जोड़ सकते हैं प्रवासन:

class DropInstalls < ActiveRecord::Migration 
    def change 
    drop_table :installs 
    end 
end 

तो कमांड लाइन जो इंस्टॉल तालिका

+1

यह उत्तर अधिक पूरा होगा यदि यह इंगित करता है कि स्कीमा एक स्वत: जेनरेट की गई फ़ाइल है और इसलिए गलत चीज़ को देखना है। – jonlink

4

निकाल देना चाहिए में rake db:migrate चलाने मैं लगता है कि यह इस समस्या को हल करने में रेल कंसोल उपयोग करने के लिए सबसे आसान है। मान लें कि आप ब्लॉग एप्लिकेशन से 'टिप्पणियां' तालिका को हटाना चाहते हैं। आप कमांड लाइन (उदा। टर्मिनल) से निम्न कार्य करके ऐसा कर सकते हैं।

चरण:

$ rails console 

चरण दो:

$ ActiveRecord::Migration.drop_table(:comments) 

चरण तीन:

$ rake db:migrate 

जाँच जाओ अपने schema.rb देखने के लिए कि तालिका हटा दिया गया था।

+4

यह खतरनाक रूप से बुरी सलाह है। यदि आप इसे मैन्युअल रूप से करते हैं, तो आपके उत्पादन ऐप को यह जानने का कोई तरीका नहीं होगा कि तालिका को छोड़ना आवश्यक है, और आप सिंक से बाहर होंगे जो बहुत सी समस्याएं पैदा कर सकता है। सही जवाब तालिका ड्रॉप करने के लिए माइग्रेशन का उपयोग करना है। – brainbag

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