Jika Anda perlu membuat, user_idmaka itu akan menjadi asumsi yang masuk akal bahwa Anda mereferensikan tabel pengguna. Dalam hal ini migrasi harus:
rails generate migration AddUserRefToProducts user:references
Perintah ini akan menghasilkan migrasi berikut:
class AddUserRefToProducts < ActiveRecord::Migration
def change
add_reference :user, :product, index: true
end
end
Setelah menjalankan rake db:migratekedua user_idkolom dan indeks akan ditambahkan keproducts meja.
Jika Anda hanya perlu menambahkan indeks ke kolom yang ada, misalnya nameauser meja, teknik berikut ini mungkin membantu:
rails generate migration AddIndexToUsers name:string:index akan menghasilkan migrasi berikut:
class AddIndexToUsers < ActiveRecord::Migration
def change
add_column :users, :name, :string
add_index :users, :name
end
end
Menghapus add_column baris dan jalankan migrasi.
Dalam kasus yang dijelaskan, Anda bisa mengeluarkan rails generate migration AddIndexIdToTable index_id:integer:indexperintah dan kemudian menghapus add_columnbaris dari migrasi yang dihasilkan. Tetapi saya lebih suka merekomendasikan untuk membatalkan migrasi awal dan menambahkan referensi sebagai gantinya:
rails generate migration RemoveUserIdFromProducts user_id:integer
rails generate migration AddUserRefToProducts user:references