2011-05-24 13 views
14

मैंने पहले से ही कई स्तंभों वाली इकाइयों नामक एक तालिका माइग्रेट की है। मैं सोच रहा था कि cmd का उपयोग करके इस तालिका में अकेले स्टैंड 'mig_index' में माइग्रेट कैसे करें।रेल: मौजूदा तालिका में add_index जोड़ने के लिए

class AddIndexToUnits < ActiveRecord::Migration 
    def self.up 
    add_index :units, :lesson_id 
    end 

    def self.down 
    remove :units 
    end 
end 

मैं एक self.down महसूस कर गलत हो सकता है, मैं अनिश्चित हूं राशि: इस कोड सही है।

उत्तर

14

self.up विधि सही है। अपने self.down के लिए इस का उपयोग करें:

remove_index :units, :column => :lesson_id 
+0

धन्यवाद: डी, ​​लगता है कि तुम लोग थोड़ा अलग जवाब – yoshyosh

+0

अंतर यह है कि यूल में सूचकांक के लिए एक नाम देता है उसकी self.up जिसे वह इसे हटाने के लिए उपयोग करता है। मेरे द्वारा प्रदान किया गया कोड इंडेक्स को इसके कॉलम नाम के आधार पर हटा देता है। – Kris

9

लगभग

class AddIndexToUnits < ActiveRecord::Migration 
    def self.up 
    add_index :units, :lesson_id, :name=>'lesson_index' 
    end 

    def self.down 
    remove_index :units, 'lesson_index' 
    end 
end 
+0

धन्यवाद! :) मैं इसे कमांड लाइन से कैसे जोड़ूं: रेल उत्पन्न माइग्रेशन add_index_to_units काम नहीं करता – yoshyosh

+0

क्या वास्तव में काम नहीं करता है? एक नई माइग्रेशन फ़ाइल नहीं बनाई गई है? – Arsen7

+0

एक फ़ाइल बनाई गई है लेकिन यह वास्तव में अजीब लगती है ... जैसे self.up परिभाषा में 2 add_columns हैं – yoshyosh

2

एक सूचकांक निकालने के लिए, आप के रूप में self.up के add_index है एक ही मेज और स्तंभ विनिर्देशन के साथ remove_index उपयोग करना चाहिए। तो:

def self.down 
    remove_index :units, :lesson_id 
end 

एक बहु स्तंभ अनुक्रमणिका उदाहरण होगा:

def self.down 
    remove_index :units, [:lesson_id, :user_id] 
end 
संबंधित मुद्दे