Jika Anda perlu membuat, user_id
maka 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:migrate
kedua user_id
kolom dan indeks akan ditambahkan keproducts
meja.
Jika Anda hanya perlu menambahkan indeks ke kolom yang ada, misalnya name
auser
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:index
perintah dan kemudian menghapus add_column
baris 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