Apakah rel memiliki validator seperti validates_numericality_of
untuk boolean atau apakah saya perlu menggulungnya sendiri?
ruby-on-rails
validation
aarona
sumber
sumber
validates :field, inclusion: [true, false]
validates :field, presence: true
) untuk bidang boolean (bidang tidak akan valid untuk suatufalse
nilai). Tapi di Rails 3 dan 4, setelahvalidates :field, inclusion: [true, false]
akan menguji penyertaan dalam daftar nilai, dengan efek samping untuk menguji keberadaan bidang (kecuali salah satu dari nilai-nilai itunil
tentu saja).validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Saya percaya untuk bidang boolean Anda perlu melakukan sesuatu seperti:
Dari versi lama API : "Ini karena cara Object # blank? Menangani nilai boolean. False.blank? # => True"
Saya tidak yakin apakah ini masih akan baik-baik saja untuk Rails 3, harap itu membantu!
sumber
true
.Ketika saya menerapkan ini, saya mendapatkan:
Peringatan dari shoulda-matchers:
Anda menggunakan
validate_inclusion_of
untuk menegaskan bahwa kolom boolean mengizinkan nilai boolean dan tidak mengizinkan nilai non-boolean. Ketahuilah bahwa tidak mungkin untuk menguji ini sepenuhnya, karena kolom boolean akan secara otomatis mengonversi nilai non-boolean menjadi nilai boolean. Karenanya, Anda harus mempertimbangkan untuk menghapus tes ini.sumber
Anda dapat menggunakan versi yang lebih pendek:
Pemikiran ekstra. Saat berurusan dengan enum, saya juga suka menggunakan konstanta:
sumber
Jawaban menurut Rails Docs 5.2.3
Helper ini (kehadiran) memvalidasi bahwa atribut yang ditentukan tidak kosong. Ini menggunakan kosong? metode untuk memeriksa apakah nilainya nihil atau string kosong, yaitu string yang kosong atau terdiri dari spasi.
Sejak false.blank? benar, jika Anda ingin memvalidasi keberadaan bidang boolean, Anda harus menggunakan salah satu validasi berikut:
sumber