Saya memiliki tabel dan saya mencoba menambahkan indeks unik pada dua kolom. Kolom tersebut juga diindeks. Jadi pertanyaan saya adalah apakah saya bisa menghapus indeks yang hanya untuk satu kolom atau jika saya harus menggunakan ketiga indeks:
add_index "subscriptions", ["user_id"]
add_index "subscriptions", ["content_id"]
add_index "subscriptions", ["user_id"], ["content_id"], :unique => true
ruby-on-rails
activerecord
Markus
sumber
sumber
used_id
dancontent_id
dalam indeks terpisah jika Anda juga memiliki indeks unik dari kedua kolom. Ini mungkin juga berlaku untuk DB lain ... Bertentangan dengan apa yang Anda harapkan, ini akan berdampak negatif pada kinerja (terutama penyisipan / pembaruan).Jawaban:
add_index :subscriptions, [:user_id, :content_id], unique: true
sumber
%w(user_id content_id)
dalam ruby hanya membuat deretan string, tidak khusus untuk rails. Anda dapat melakukan hal yang sama dengan"user_id content_id".split
membuat array string. Saya yakin Anda tahu ini, komentar ini hanya agar pembaca lain tidak salah mengaitkannya dengan rel :)%w(user_id content_id)
adalah Array of Strings. Yang sama dengan['user_id', 'content_id']
. Notasi yang berbeda untuk Array of Symbols adalah%i(user_id content_id)
, atau seperti yang ditulis oleh OP[:user_id, :content_id]