2013-06-05 6 views
41

मेरे पास कॉलम 'ईमेल' के साथ एक टेबल 'उपयोगकर्ता' है। यह अद्वितीय (सूचकांक के साथ) होता था, लेकिन वहां एक नई आवश्यकता है कि वहां नीलों को अनुमति दें।रेल 3 सूचकांक में कॉलम इंडेक्स को बदलना संभव है?

remove_index :users, :email 
    add_index :users, :email 

:

वहाँ की तुलना में एक बेहतर समाधान है?

शुरू में यह विकल्प अद्वितीय के साथ जोड़ा गया है:

add_index :users, :email, :unique => true 

उत्तर

34

मैं कहूंगा कि तुम वहाँ सही समाधान है कि के रूप में सूचकांक पुनर्जीवित करने की आवश्यकता होगी, इसलिए क्यों है वहाँ कोई update_index

10

अरे यहाँ एक माइग्रेशन है जिसे मैंने अभी लिखा है जो बहुत अच्छी तरह से काम करता है। मेरे पास एक स्तंभ 'स्क्रैप_पिसोड' है जिसमें वर्चर (255) 'संलग्नक यूआरएल' है। मुझे इसे लंबे समय तक यूआरएल बनाने की ज़रूरत है, इसलिए मैंने इसका उपयोग किया है (रेल 3.2.13)

class ExpandEnclosureUrl < ActiveRecord::Migration 
    def up 
    # remove index cuz we need to 
    remove_index :scraped_episodes, :enclosureUrl 

    # change length to 2048 characters 
    change_column :scraped_episodes, :enclosureUrl, :text, :limit=>2048 

    # redo this index to only index the first 255 chars 
    add_index :scraped_episodes, :enclosureUrl, :length => 255 
    end 

    def down 
    # remove index cuz we need to 
    remove_index :scraped_episodes, :enclosureUrl 

    # use the same settings at when i first created this field 
    change_column :scraped_episodes, :enclosureUrl, :string, :limit=>nil 

    # use the same settings as when i first added this index 
    add_index :scraped_episodes, :enclosureUrl 
    end 


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