Yanıtlar:
Rails 3'ten bu yana şunları yapabilirsiniz:
validates :field, inclusion: { in: [ true, false ] }
validates :field, inclusion: [true, false]
validates :field, presence: true
Bir boole alanı için mevcudiyet ( ) için olağan doğrulamaya sahip olamayacağınızı unutmayın (alan bir false
değer için geçerli olmayacaktır ). Ancak hem Rails 3 hem de 4'te, validates :field, inclusion: [true, false]
alanın varlığını test etmek için yan etki ile bir değerler listesine dahil edilmeyi test etmek gerekir (bu değerlerden biri nil
elbette değilse ).
validates :field, inclusion: { in: [ true, false ], message: "Please, select one!" }
Boole alanı için aşağıdaki gibi bir şey yapmanız gerektiğine inanıyorum:
validates_inclusion_of :field_name, :in => [true, false]
API'nin eski bir sürümünden : "Bu, Object # blank'in boole değerlerini işleme biçiminden kaynaklanmaktadır. False.blank? # => True"
Bunun Rails 3 için hala iyi olup olmayacağından emin değilim, umarım yardımcı olur!
true
.
Bunu uyguladığımda şunu elde ederim:
Shoulda-eşleştiricilerden uyarı:
validate_inclusion_of
Bir boole sütununun boole değerlerine izin verdiğini ve boolean olmayanlara izin vermediğini iddia etmek için kullanıyorsunuz . Boolean sütunlar otomatik olarak boole olmayan değerleri boolean değerlere dönüştüğünden, bunu tam olarak test etmenin mümkün olmadığını unutmayın. Bu nedenle, bu testi kaldırmayı düşünmelisiniz.
Daha kısa versiyonu kullanabilirsiniz:
validates :field, inclusion: [true, false]
Ekstra düşünce. Numaralandırmalarla uğraşırken ben de bir sabit kullanmayı severim:
KINDS = %w(opening appointment).freeze
enum kind: KINDS
validates :kind, inclusion: KINDS
Göre cevapla Rails Docs 5.2.3'e
Bu yardımcı (varlık), belirtilen özniteliklerin boş olmadığını doğrular. Boşluk kullanıyor mu? değerin sıfır mı yoksa boş bir dize mi, yani boş veya boşluklardan oluşan bir dize mi olduğunu kontrol etme yöntemi.
False.blank'tan beri? doğrudur, bir boole alanının varlığını doğrulamak istiyorsanız, aşağıdaki doğrulamalardan birini kullanmalısınız:
validates :boolean_field_name, inclusion: { in: [true, false] }