यदि आपको एक निर्माण करने की आवश्यकता है user_id
तो यह एक उचित धारणा होगी कि आप एक उपयोगकर्ता तालिका का संदर्भ दे रहे हैं। किस स्थिति में प्रवास होगा:
rails generate migration AddUserRefToProducts user:references
यह आदेश निम्नलिखित माइग्रेशन उत्पन्न करेगा:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
rake db:migrate
एक user_id
कॉलम और एक इंडेक्स दोनों चलाने के बाद products
टेबल पर एक इंडेक्स जोड़ा जाएगा ।
यदि आपको किसी मौजूदा कॉलम में एक इंडेक्स जोड़ने की जरूरत है, उदाहरण name
के user
लिए, तालिका निम्न तकनीक सहायक हो सकती है:
rails generate migration AddIndexToUsers name:string:index
निम्नलिखित माइग्रेशन उत्पन्न करेगा:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
add_column
लाइन हटाएं और माइग्रेशन चलाएं।
वर्णित मामले में आप rails generate migration AddIndexIdToTable index_id:integer:index
आदेश जारी कर सकते हैं और फिर add_column
उत्पन्न माइग्रेशन से लाइन हटा सकते हैं । लेकिन मैंने प्रारंभिक माइग्रेशन को पूर्ववत करने और इसके बजाय संदर्भ जोड़ने की सिफारिश की है:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references