Misalkan saya membuat tabel table
di aplikasi Rails. Beberapa waktu kemudian, saya menambahkan kolom yang berjalan:
rails generate migration AddUser_idColumnToTable user_id:string.
Kemudian saya menyadari bahwa saya perlu menambahkan user_id
sebagai indeks. Saya tahu tentang add_index
metodenya, tetapi di manakah metode ini harus dipanggil? Apakah saya seharusnya menjalankan migrasi (jika ya, yang mana?), Lalu menambahkan dengan tangan metode ini?
ruby-on-rails
indexing
migration
pengguna1611830
sumber
sumber
:table
adalah sebenarnya nama tabel, sehingga dalam kasususers
meja, Anda akan menggantikan:users
untuk:table
.Jika Anda perlu membuat,
user_id
maka itu akan menjadi asumsi yang masuk akal bahwa Anda mereferensikan tabel pengguna. Dalam hal ini migrasi harus:Perintah ini akan menghasilkan migrasi berikut:
Setelah menjalankan
rake db:migrate
keduauser_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: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 menghapusadd_column
baris dari migrasi yang dihasilkan. Tetapi saya lebih suka merekomendasikan untuk membatalkan migrasi awal dan menambahkan referensi sebagai gantinya:sumber
Tambahkan migrasi yang dihasilkan setelah membuat kolom berikut (contoh)
sumber
Untuk referensi Anda bisa menelepon
Jika di masa mendatang Anda perlu menambahkan indeks umum, Anda dapat meluncurkan ini
Hasilkan kode:
sumber
Anda dapat menggunakan ini, anggap saja Job adalah nama model yang Anda tambahkan index cader_id :
sumber