Saya memiliki Release
model dengan kolom medium
dan country
(antara lain). Seharusnya tidak ada releases
bagian yang identik medium
/ country
kombinasi.
Bagaimana saya menulis ini sebagai validasi rel?
ruby-on-rails
ruby-on-rails-3
ruby-on-rails-4
activerecord
rails-activerecord
Jackson Cunningham
sumber
sumber
Jawaban:
Anda dapat menggunakan validasi keunikan dengan
scope
opsi.Selain itu, Anda harus menambahkan indeks unik ke DB untuk mencegah record baru lolos validasi saat diperiksa pada saat yang sama sebelum ditulis:
sumber
unique
tidak dikenali. Untuk bagian itu saya telah menggunakan jawaban di bawah ini.uniqueness
, bukanunique
. Lihat dokumentasi terkait. Memperbaiki jawabannya.Semua jawaban di atas tidak memiliki cara memvalidasi keunikan beberapa atribut dalam sebuah model. Kode di bawah ini bermaksud untuk memberi tahu cara menggunakan beberapa atribut dalam satu ruang lingkup.
Ini memvalidasi keunikan
country
di semua baris dengan nilaimedium
dananother_medium
.Catatan: Jangan lupa untuk menambahkan indeks pada kolom di atas, ini menjamin pengambilan cepat dan menambahkan validasi tingkat DB untuk catatan unik.
Pembaruan: Untuk menambahkan indeks saat membuat tabel
sumber
Anda dapat mengirimkan
:scope
parameter ke validator Anda seperti ini:Lihat dokumentasi untuk beberapa contoh lainnya.
sumber